首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C语言中获取多个单词而不获取\n

在C语言中获取多个单词而不获取\n
EN

Stack Overflow用户
提问于 2018-07-15 06:05:12
回答 1查看 90关注 0票数 0

如何将几个单词(中间有空格和任意数字)扫描成一个字符串,但最后没有得到'\n‘字符?我知道有人问过类似的问题,但他们都没有给出真正令人满意的答案。我希望在一句话中就能得到实现这种机制的答案。

EN

回答 1

Stack Overflow用户

发布于 2018-07-15 06:10:35

代码语言:javascript
复制
char buffer[256];

if (scanf(" %255[^\n]", buffer) != 1)
    …oops — EOF or something dramatically awry…

扫描集不会跳过前导空白( %c%n也不会),所以我添加了前导空白来跳过前导空白。如果您还想要前导空格,请在格式字符串中删除该空格,但您有责任确保输入中的下一个字符不是换行符(例如,如果您刚刚读取了一个数字,则通常是换行符)。当到达换行符、EOF或已读取255个字符时,转换(扫描集)停止。如果下一个字符是换行符,则可以添加%*[\n]来读取换行符。不过,您永远不会知道它们是否匹配。如果你一定要知道,你需要:

代码语言:javascript
复制
char buffer[256];
char nl[2];
int  rc;

if ((rc = scanf(" %255[^\n]%[\n]", buffer, nl)) <= 0)
    …oops — EOF or something dramatically awry…
else if (rc == 1)
    …no newline — presumably the input line was longer than 255 characters…
else
    …data in buffer is a complete line except for the newline, but the newline was read…

注意255和256的用法--这不是偶然的,而是100%必要的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51343741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档