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

我最近在做课程设计,关于信息管理的。我定义了一个结构体,里面包含char[]和int、long等类型。输入函数里我不想用scanf每一行只输入一个数据,那样即麻烦又不美观... 我最近在做课程设计,关于信息管理的。我定义了一个结构体,里面包含char[]和int、long等类型。
输入函数里我不想用scanf每一行只输入一个数据,那样即麻烦又不美观。
我想问问有没有什么好的办法能在scanf("%s %d",char,int)时使输入时能用空格将两个数据分别赋给char和int,而不是全部给char了。
展开
 我来答
百度网友6dc5d8b
2014-03-15 · TA获得超过721个赞
知道小有建树答主
回答量:390
采纳率:100%
帮助的人:274万
展开全部
你还是分开用两个scanf做吧

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

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

如果有多个空格,那问题就比较复杂,因为可能连你自己都不知道以哪个空格为界定标准去区分两个数据,叫程序怎么懂!要美观你直接图形界面的好了。
xoaxa
2014-03-15 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3471万
展开全部
char s[20];
int num;
scanf("%s%d",s,&num); // 输入时,两个数据之间加一个(或多个)空格,如:abc  124
追问
我刚试过不行
追答
对于scanf()函数来说,空格是常用的数据分隔符,scanf()函数之所以不能读入一行文本的原因也在与此,要想读入一行文本串,通常都用gets()函数。在多个平台上测试都是这样,我不知道你说的不行是指哪儿不行,对于scanf("%s%d",s,&num);,是s没有得到需要的串,还是num没有得到需要的值,还是都没有得到呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金色潜鸟
2014-03-15 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5682万
展开全部
格式里加上空格。读数时保证跳过空白。

#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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
solotony
2014-03-15 · TA获得超过599个赞
知道小有建树答主
回答量:700
采纳率:0%
帮助的人:572万
展开全部
char msg[32];
int d;
scanf("%s%d", msg, &d);
正是你想要的,输入hello 50,msg中是hello, d是50.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
剑魔_独孤殇
2014-03-14 · TA获得超过108个赞
知道答主
回答量:54
采纳率:0%
帮助的人:27.9万
展开全部
应该可以把你想要的功能包装成一个函数来实现吧、、、
追问
我知道,现在就在写这个输入函数,卡在scanf这里了
追答
不知道是不是我理解错了,直接用if语句判断输入字符的ASSIC码不就行了吗?判断是否属于0~9之间的assic码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式