簡體   English   中英

C程序從.txt文件中獲取每行的第一個單詞,並將該單詞打印到另一個.txt文件中:某種工作方式還可以打印隨機字母

[英]C program to get first word of each line from a .txt file and print that word onto another .txt file: Kind of works but also prints random letters

因此,我們有一個名為Dictionary1.txt的文件,它的旁邊緊跟着帶有發音的單詞。 我要做的是從每一行中獲取第一個單詞,並將它們打印到程序從頭開始創建的另一個txt文件中。 我的代碼可以做到,但它還會在英文單詞之間打印隨機的中文字母,我不知道為什么。

輸出文件如下所示: https : //imgur.com/a/pZthP

(發音與每行的實際單詞分開,在dictionary1.txt中帶有空格)

我的代碼:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
char line[100];
int i = 0;
FILE* fp1 = fopen("dictionary1.txt", "r");
FILE* fp2 = fopen("dictionary2.txt", "w");

if (fp1 == NULL || fp2 == NULL){
    printf("ERROR");
    return -1;
}

while (fgets(line, 100, fp1) != NULL){
    while (line[i] != ' '){
        fputc(line[i], fp2);
        i++;
    }
    i=0;
    fputc('\0', fp2);
}

return 0;
}

我也嘗試過fputc('\\ n',fp2),無論我無法從頭開始創建文件的下一行如何。 我也不能擺脫所有隨機的中文字母。

編輯:我想通了。 我正在處理的.txt文件以Unicode格式保存,但該程序不能很好地與我的程序配合使用。 我將其轉換為ANSI,現在它就像一種魅力。

\\ n在所有操作系統和所有編輯器上都不是正確的行分隔符。

如果要在記事本上編輯txt文件,請嘗試使用fputs ("\\r\\n", fp2); ,其中\\ r表示回車符(光標在該行的第一個字符處返回)和\\ n新行。

一般來說,Windows使用'\\ r \\ n'作為行分隔符,'\\ n'字符至少在記事本中顯示為除結束行以外的其他內容。 Linux和Mac OS使用不同的行分隔符。 您可能還想嘗試fprintf(fp2, "\\n"); 核對一下\\ n和\\ r似乎無處不在。 為什么line.separator更可移植?

如果您不介意使用C ++,則可以嘗試創建輸出流os並編寫os << endl請注意,有些編譯器可能會自動將'\\ n'轉換為相應的操作系統結束符/字符序列,而有些可能不。

另一件事,將while循環條件更改為line[i] != ' ' && line[i] != '\\0'然后使用fclose關閉文件fp2

.txt文件是使用Unicode格式保存的。 我將其轉換為ANSI,所有內容突然修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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