C语言输入一个中间代有空格的字符串,为什么不可以用scanf? 急急急 5

 我来答
yx492366323
2019-11-30 · 超过13用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:17.6万
展开全部

默认是以空白符作为结束标记的,如果要用scanf读取带空格的字符串,可以这样。

以换行符作为结束标记,从而读取带空格的字符串。

#include <stdio.h> 
int main() 

    char str[100]; 
    scanf("%[^\n]",str);
    printf("%s",str);
    return 0;
}
kosl90
推荐于2018-05-06 · TA获得超过440个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:231万
展开全部
因为scanf是以空白符(空格、制表符、换行等等)为结束标志的,当遇到空白符是就会结束一次输入,如果你需要读取空格的话可以使用gets或者getchar
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
alijinfu
2011-06-24
知道答主
回答量:31
采纳率:0%
帮助的人:15.5万
展开全部
scanf的话读到空格那么这个字符串就结束了。如果你想读进带空格的字符串就用gets();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
包袱怎么写aA
2011-06-24 · 超过20用户采纳过TA的回答
知道答主
回答量:60
采纳率:50%
帮助的人:27.4万
展开全部
因为C语言的字符串是以'\0'作为结束符为标记的,所以当有空格的时候,scanf就会忽略后面的字符串的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
姬梓瑶兆涵
2019-01-09 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:34%
帮助的人:870万
展开全部
有了char
a[10];,那么a就是这个数组的第一个元素的指针,&a就是这个数组的指针;因为一维数组的第一个元素的指针和这个数组的指针是同一个地址,区别是a+1指向a[1],而&a+1就指向a[10]了(这里已越界了)。但&a和a的"值"是相同的,只是类型不同。c调用函数时,实参的类型都会被强制为形参的类型,scanf("%s",
&a)或scanf("%s",
a)中要求参数是char
*型指针,那么&a尽管是char
**类型,但被强行转换为char
*型了……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式