| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 717 人关注过本帖
标题:接收一组数据 形式%d%s%d ,其中%s可以由1个或2个字符组成,如果同时接受, ...
只看楼主 加入收藏
oszc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:111
专家分:154
注 册:2011-4-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:12 
接收一组数据 形式%d%s%d ,其中%s可以由1个或2个字符组成,如果同时接受,怎么做?
比如要接受一个库存记录:

记录号码    工具名称        数量  
1            Tom Curious    5

如果用 scanf("%d%s%d") 显然行不通,各位兄弟有什么好办法?
搜索更多相关主题的帖子: 兄弟 
2011-06-05 23:18
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
用结构去处理吧。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-05 23:29
fragileeye
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:107
专家分:387
注 册:2011-5-21
收藏
得分:5 
#include <stdio.h>
int main(int argc, char *argv[])
{
    int tool, ct;
    char name[20];
    scanf("%d\n%[^\n]%d", &tool, name, &ct);
    printf("tool = %d\n",tool);
    printf("name = %s\n", name);
    printf("ct = %d\n", ct);
    return 0;
}
/*input:(如果用scanf就得每次输入回车,建议用fgets())
1
Tom Curious   
5
*/

/*output:
tool = 1
name = Tom Curious
ct = 5
*/
2011-06-06 00:07
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
回复 3楼 fragileeye
楼上用了正则表达式吗?

My life is brilliant
2011-06-06 00:48
oszc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:111
专家分:154
注 册:2011-4-15
收藏
得分:0 
以下是引用fragileeye在2011-6-6 00:07:20的发言:

#include <stdio.h>
int main(int argc, char *argv[])
{
    int tool, ct;
    char name[20];
    scanf("%d\n%[^\n]%d", &tool, name, &ct);
    printf("tool = %d\n",tool);
    printf("name = %s\n", name);
    printf("ct = %d\n", ct);
    return 0;
}
/*input:(如果用scanf就得每次输入回车,建议用fgets())
1
Tom Curious   
5
*/

/*output:
tool = 1
name = Tom Curious
ct = 5
*/

能否给无回车的版本,我找了fgets()的例子,也没研究出来
2011-06-06 02:21
fragileeye
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:107
专家分:387
注 册:2011-5-21
收藏
得分:0 
回复 4楼 lz1091914999
只是稍微了解、、
2011-06-06 03:55
fragileeye
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:107
专家分:387
注 册:2011-5-21
收藏
得分:0 
回复 5楼 oszc
fgets()用于输入字符串,相对gets()要安全一些。lz没懂我得意思。
2011-06-06 03:57
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
回复 2楼 ansic
程序代码:
#include<stdio.h>

struct record
{
   int num;
   char name[20];
   int  count;
}rec;

int main()
{
    printf("please input the information\n");
    scanf("%d%s%d",&rec.num,rec.name,&rec.count);

    printf("%-4d%-10s%-4d",rec.num,rec.name,rec.count);
  return 0;
}
这样做的话 输入字符串是中间不能有空格啊
2011-06-06 08:20
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
用fgets的话  必须先要有文件 文件中存有你要的内容 格式为 fgets(str,n,fp);
2011-06-06 08:23
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
如果处理文件,可以一次性都当做字符串读取,然后分开处理,如果不是文件,建议用结构体或者3楼的方法。
2011-06-06 08:26
快速回复:接收一组数据 形式%d%s%d ,其中%s可以由1个或2个字符组成,如果同时接 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028327 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved