При попытке прочитать обычный текстовый файл с помощью fgets на C я получаю странный вывод в первой строке. Поэтому, если первая строка предназначена для «привет», она выглядит примерно так: «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;
}
Я искал каждое описание этой проблемы, которое я могу дать, в Google и переполнении стека, и я не могу найти ничего, что могло бы ее исправить.
argv[0]
- это исполняемый файл вашего приложения, а не первый аргумент, передаваемый вашему приложению, как вы предполагаете. Ознакомьтесь с этой веткой: stackoverflow.com/questions/2020945/argc-and-argv-in-main - person Jack   schedule 31.10.2012