[英]C Eclipse - Printing unwanted unicode characters when reading file
我是 C 的初學者,我正在嘗試逐個字符地讀取僅包含 Hello world 的文本文件。
我的代碼是:
#include <stdio.h>
#include <ctype.h>
FILE *fin = fopen("t1.txt", "r");
char temp = fgetc(fin);
printf("%c", temp);
while (temp != EOF) {
temp = fgetc(fin);
printf("%c", temp);
}
fclose(fin);
但是,output 是 Hello worldÿ。 我在 Hello world 的末尾添加了一個新行,並且 ÿ 出現在它之后。 我已經使用此代碼遍歷並打印出一個用 int 填充的文本文件而沒有問題,但是從 %d 更改為 %c 會導致打印一個類似的奇怪字符。 我被告知這是一個本地問題,可能與我 PC 上的東方語言或新的 Eclipse 更新有關。 這里可能是什么問題,我該如何解決? 謝謝。
#include <stdio.h>
#include <ctype.h>
FILE *fin = fopen("t1.txt", "r");
int temp;
while ((temp = fgetc(fin)) != EOF) {
printf("%c", temp);
}
fclose(fin);
我發現閱讀while
語句中的字符是最容易且最不容易混淆的,如上所示。 如評論中所述,這允許更簡潔的代碼,並且可以防止您打印EOF
字符。
正如評論中提到的, fgetc()
返回和int
,而不是char
,所以我也在這里進行了更改。
如果可以的話,我還想指出temp
對變量來說是一個相當糟糕的名稱,因為它的描述性不是很強。 也許考慮使用c
類的東西,這很簡單。 它很短,通常會讓人知道你正在處理一個角色(盡管它在技術上是一個int
)
通過分配(temp = fgetc(fin)) != EOF
解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.