繁体   English   中英

scanf循环直到回车

[英]scanf in a loop till carriage return

我试图读取多个字段的用户输入。 但是没有指定字段数。 我想读回所有的字,直到回车。 我试过这段代码,但它不起作用:

char str[256];
while(1)
{
    scanf("%s", str);
    if(str[strlen(str)] == '\n')
         break;
    else
         printf("Got %s\n", str);

}

用户输入示例:
1.存储文件1
我需要解析store和file1并打破循环。
2.存储file1 file2
我需要解析store,file1和file2并打破循环。

想知道如何在回车时突破循环。

谢谢。

采用

char str[256]
scanf("%255[^\n]", str); /*edit*/

它将读取换行符或(编辑:) 255个字符,以先到者为准。

您可以使用fgets()读取,然后使用strtok()将缓冲区拆分为标记

这样你可以完全控制一切。

目前,你的char数组str [256]没有任何东西或垃圾,所以当你查找时,你将找不到它。

尝试这个。

char str[256];
while(1)
{
    scanf("%s", str);
    printf("Got %s\n",str);
    if(fgetc(stdin) == '\n')
        break;
}
char str[256]
scanf("%256[^\n]", str);

小心那些代码。 它将溢出char数组以获得长字符串。 您希望scanf中的%255容纳空终止符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM