c - 关于从 C 中的文本文件中读取 char 数组的任何建议?

标签 c arrays chars

这是我遇到的问题。

我正在从一个文件中读入文本行,但只是试图读入不是连续重复的行。

这是我阅读文本行的常规代码。

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

效果很好。

当试图弄清楚如何解决这个问题时,我尝试使用一个字符数组,一次读取一行,然后使用 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';

但我知道出于某些原因这不会奏效。第一,我从不将以前的字符添加到最终数组中。我真的迷路了。任何帮助表示赞赏。谢谢。

最佳答案

有一个getline() stdio.h 中的函数,您可以使用它来获取文件中的每一行。

要跳过重复项,您可以存储前一行读取并在每一步进行比较。

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()

关于c - 关于从 C 中的文本文件中读取 char 数组的任何建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50093607/

相关文章:

java - 使用 For 循环生成多个字符串

c - 仅将字符数组的第一个元素传递给函数 C++

c++ - 在 C++ 中将字符存储到字符串中

JQuery load() 和国家字母(如 ę、ą、ć)

c++ - 是否有任何操作系统允许将内存从一个地址移动到另一个地址而无需物理复制它?

c - `strcmp` 的返回值的顺序是什么?

c - 如何使用 FFMpeg 同时收听 2 个传入的 rtsp 流

将字符串转换为 C 中的 float (无 atof)

c# - 无法使用 C# 将带 [] 的索引应用于类型为 'System.Array' 的表达式

Java从数组中删除零