簡體   English   中英

C Eclipse - 讀取文件時打印不需要的 unicode 字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM