我正在尝试阅读包含多个字段的用户输入。但是没有指定字段数。我想读回所有的字,直到回车。我试过这段代码,但它不起作用:
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并打破循环。
想知道如何在回车时突破循环。
感谢。
答案 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容纳空终止符。