gpt4 book ai didi

c - 使用 fgets 读取文本文件时出现奇怪的符号

转载 作者:行者123 更新时间:2023-12-04 09:21:38 25 4
gpt4 key购买 nike

当尝试在 C 中使用 fgets 读取纯文本文件时,我在第一行得到了一些看起来很奇怪的输出。因此,如果第一行是“hello”,它会显示为“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;
}

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

最佳答案

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

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

关于c - 使用 fgets 读取文本文件时出现奇怪的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13152208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com