【发布时间】: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;
}
我已经在谷歌和堆栈溢出上搜索了我能给出的关于这个问题的所有描述,但我找不到任何可以修复它的东西。
【问题讨论】:
-
那个 ELF 看起来就像你正在阅读 Linux 可执行文件。
-
请注意,
argv[0]是您的应用程序名称可执行文件,而不是您假设的传递给您的应用程序的第一个参数。看看这个线程:stackoverflow.com/questions/2020945/argc-and-argv-in-main
标签: c string pointers file-io fgets