【问题标题】:Strange symbols when reading text file with fgets使用 fgets 读取文本文件时出现奇怪的符号
【发布时间】:2012-10-31 06:12:43
【问题描述】:

当尝试在 C 中使用 fgets 读取纯文本文件时,我在第一行得到一些看起来很奇怪的输出。因此,如果第一行的意思是“你好”,它会显示为“ELFh` �� 20120918 (prerelease)@xxhello”。代码如下:

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

int main(int argc, char **argv)
{
    FILE *fr;
    int i;
    extern int uniq(char *previous_word, char *current_word);
    char *line1 = malloc(500);
    char *line2 = malloc(500);
    char *temp;
    for(i = 0; i<argc; i++)
    {

        fr = fopen (argv[i], "r");
        while(fgets(line2, 499, fr) != NULL)
        {
            uniq(line1, line2);
            temp = line1;
            line1 = line2;
            line2 = temp;
        }
        fclose(fr);
    }
    return 0;
}
int uniq(char *previous_word, char *current_word) {
    if(!(current_word))
        return 1;
    if(strcmp(previous_word, current_word))
        printf("%s", current_word);
    return 0;
}

我已经在谷歌和堆栈溢出上搜索了我能给出的关于这个问题的所有描述,但我找不到任何可以修复它的东西。

【问题讨论】:

标签: c string pointers file-io fgets


【解决方案1】:

您的循环必须从索引 1 开始。argv[0] 是您的可执行文件。

如果您有所谓的多二进制可执行文件,检查argv[0] 会很有帮助。在那里,您只需一个二进制文件即可处理不同的命令。这对于需要节省内存的嵌入式系统非常有用。

【讨论】:

  • 我修正了一些拼写错误,但我很想单独留下“multi binary execrable”。 8-)}
  • 如果你在地铁里帮忙,就会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 2019-10-24
  • 1970-01-01
相关资源
最近更新 更多