В коде мало проблем. Во-первых, это
FILE *fp = fopen("argv[1]","r");
неправильно. Первый параметр fopen()
должен быть просто argv[1]
вместо "argv[1]"
. Например,
FILE *fp = fopen(argv[1],"r");
if(fp == NULL) {
fprintf(stderr,"Can't open %s\n", argv[1]);
return 0; /* this you forgot, if fopen fails,then no need to proceed further */
}
Также, если argc<2
имеет значение true, тогда простого написания printf()
недостаточно, вы должны попросить пользователя ввести правильный ввод в командной строке и не позволять пользователю продолжать работу. Должно быть
if(argc < 2) {
printf("Usage:\t");
printf("Hash File path");
return 0; /* return from here or use exit(0) */
}
Во-вторых, прочитайте здесь , почему feof()
не так. Вы можете использовать его как
while(fgets(buff,100,fp) != NULL) { /* no need to use break */
fputs(buff,stdout);
}
вместо
while(!feof(fp))
{
if(fgets(buff,100,fp) == NULL) break;
fputs(buff,stdout);
}