scanf循环直到回车

时间:2011-04-06 05:04:31

标签: c loops while-loop scanf

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

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并打破循环。

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

感谢。

5 个答案:

答案 0 :(得分:3)

使用

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

试试这个。

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

答案 4 :(得分:1)

char str[256]
scanf("%256[^\n]", str);

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