[英]Read txt file from standard input and store whole text into char array
讓我描述一下我正在嘗試做的事情。
編譯源代碼並使用輸入文本文件運行
gcc main.c -o main
./main < 文本.txt
然后'text.txt'中的文本應該存儲到一個變量中。 我不確定,但我認為這應該是 char 數組。
最終,我想循環遍歷 'text.txt' 的每個字符及其索引; 在 python 它應該如下所示
i = 0
while i < len(string):
print(string[i])
if (~~~):
i -= 10(or some other numbers)
else:
i += 1
需要考慮的幾點
我怎樣才能在 C 中寫這個?
以下是我在 C 中的嘗試,但沒有奏效。
int main(){
char A;
short i;
scanf("%s", A);
printf("%s", A);
for (i=0; i < strlen(A); i++) {
printf("%c", A[i]);
}
return 0;
}
您可以通過多種方式進行操作,讓我們從獲得適當長度的文件開始。
FILE *f = fopen("textfile.txt", "rb");
fseek(f, 0, SEEK_END); // goes to the end of file
long fsize = ftell(f); // tells what position in bytes is
fclose (f)
f = fopen("textfile.txt", "r");
您注意到我正在使用rb
或讀取二進制文件。 那是因為要克服這樣一個事實,即如果您在非二進制模式下使用fseek()
和ftell()
,您將陷入未定義的行為,結果可能在 Windows 機器和 (*)nix 機器之間有所不同。
現在如何將文本文件讀入字符串。 有多種方式
getc()
fscanf()
也不是首選,比getc()
更好,因為它可以同時讀取多個字節fgets()
您可以指定您讀取的文件的大小,從而避免緩沖區溢出。以上是快速而骯臟的閱讀方式,不知道你的 DE 是什么樣的(什么操作系統、編譯器等)我可以 go 更詳細地了解如何做到這一點,但 tnx 到 @Nail 這里是一篇文章,你可以閱讀。 您可以使用它並為不同的操作系統設置標志,而不是使用我的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.