[英]Reading strings in C
我必須在CI中讀取不同長度的字符串,可以使用指針數組並在循環內使用alloc。問題是程序的輸入是一系列句子,如下所示:
Rene Decartes曾經說過,
“我思故我在。”
還有更多。 如何檢查用戶已完成輸入句子的programmaticaly。
如果我理解這個問題,你就不是在尋找“行尾”信號; 你正在尋找“句末”信號。
執行此操作的常用方法是在用戶完成時要求用戶輸入空行。 然后(取決於您如何讀取字符串),您可以檢查空字符串或僅包含單個(換行符)字符的字符串。
也許他甚至在尋找文件結尾(輸入結束,流結束)。 您可以通過檢查各種輸入函數的返回值來檢測輸入流的結束。 您沒有告訴我們您用於閱讀輸入的功能。 例如,使用fgets()
和標准輸入的輸入,你會做
#include <stdio.h>
#define BUFFERSIZE 256
char buffer[BUFFERSIZE];
...
while (fgets (buffer, sizeof buffer, stdin) != NULL) {
/* Do something with buffer. */
}
/* No more lines on stdin. */
循環數組鍵,直到找到“\\ 0”字符。
您應該使用“行尾”作為分隔符一次處理一行。 您可以將它們存儲到**char
- 當然是正確分配的。 要小心邊界,並且更喜歡strncpy()
到strcpy()
- 后者是不安全的。
利用some delimiters
並要求用戶在完成所有句子時輸入它,同時為了檢查each line check with '\\n' as the delimiter
的結尾each line check with '\\n' as the delimiter
,
您可以告訴用戶鍵入一個特殊符號或字符串,表示輸入已結束。 例如,您可以告訴用戶輸入.
在新行中終止輸入。 結賬@Adam Liss的回答也是。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.