簡體   English   中英

關於從C中的文本文件讀取char數組的任何建議?

[英]Any advice for reading in char arrays from text files in C?

這是我遇到的問題。

我正在讀取文件中的文本行,但僅嘗試讀取非連續重復的行。

這是我用於閱讀文本行的常規代碼。

  while (((ch = getc (fp)) != EOF))
         {
            a[j++] = ch;
         }   
          a[j] = '\0';

效果很好。

當試圖解決該問題時,我嘗試使用一個char數組,一次讀取一行,然后使用strcomp將其與上一行進行比較。 如果匹配,則不會將該行添加到最終的char數組中。 看起來像這樣:

  while (((ch = getc (fp)) != EOF))
        {
            if (ch != '\n')
            {
            copynumber++;
            temp[j] = ch;
            }
            else 
            {
            uni = strcmp(identical, final);
                if (uni == 0) {
                    copynumber = 0;
                }
                else 
                {
                    strncpy(identical, temp, copynumber);
                    final[j] = ch;
                }
                j++;
            }

        }
          final[j] = '\0';

但我知道由於某些原因,這將無法正常工作。 第一,我從不將以前的字符添加到最終數組中。 我真的迷路了。 任何幫助表示贊賞。 謝謝。

stdio.h中有一個getline()函數,可用於獲取文件中的每一行。

要跳過重復項,您可以存儲上一步讀取的行,並在每個步驟進行比較。

FILE *fp;
char *line = NULL;
char *prev_line[999];
char final[999];
size_t len = 0;
ssize_t read;

fp = fopen("file", "r");

while ((read = getline(&line, &len, fp)) != -1) { // Read each line
    if (strncmp(line, prev_line, read) != 0) {    // If not equal
        strncat(final, line, read);                // Copy to final
        strncpy(prev_line, line, read);           // Update previous
    }
}

free(line); // Need to free line since it was null when passed to getline()

暫無
暫無

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

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