scanf("%s%d",char,&int)如何正确赋值?

我最近在做课程设计,关于信息管理的。我定义了一个结构体,里面包含char[]和int、long等类型。
输入函数里我不想用scanf每一行只输入一个数据,那样即麻烦又不美观。
我想问问有没有什么好的办法能在scanf("%s %d",char,int)时使输入时能用空格将两个数据分别赋给char和int,而不是全部给char了。

你还是分开用两个scanf做吧

scanf在处理%s的时候是不考虑空格的意味着遇到空格%s随即接收完毕。

而且理论上讲,你的那个字符串也有空格吧?而且还不知道多少个空格是吧? 如果没有空格那好办,scanf("%s%d",char*,int)就搞定了。

如果有多个空格,那问题就比较复杂,因为可能连你自己都不知道以哪个空格为界定标准去区分两个数据,叫程序怎么懂!要美观你直接图形界面的好了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-15
char s[20];
int num;
scanf("%s%d",s,&num); // 输入时,两个数据之间加一个(或多个)空格,如:abc  124

追问

我刚试过不行

追答

对于scanf()函数来说,空格是常用的数据分隔符,scanf()函数之所以不能读入一行文本的原因也在与此,要想读入一行文本串,通常都用gets()函数。在多个平台上测试都是这样,我不知道你说的不行是指哪儿不行,对于scanf("%s%d",s,&num);,是s没有得到需要的串,还是num没有得到需要的值,还是都没有得到呢?

第2个回答  2014-03-15
格式里加上空格。读数时保证跳过空白。

#include <stdio.h>
int main(){
int a,b,c;
char s[60];
scanf(" %s %d",s, &a);
printf("s=%s a=%d\n",s,a);
scanf(" %s %d",s, &a);
printf("s=%s a=%d\n",s,a);
return 0;
}本回答被网友采纳
第3个回答  2014-03-15
char msg[32];
int d;
scanf("%s%d", msg, &d);
正是你想要的,输入hello 50,msg中是hello, d是50.
第4个回答  2014-03-14
应该可以把你想要的功能包装成一个函数来实现吧、、、追问

我知道,现在就在写这个输入函数,卡在scanf这里了

追答

不知道是不是我理解错了,直接用if语句判断输入字符的ASSIC码不就行了吗?判断是否属于0~9之间的assic码。