簡體   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