Я читаю из файла в строку с функцией fread и затем печатаю строку. Я определил строку как массив символов с размером LONGNUM (предварительно определенное значение). Я читаю 1 элемент размером 1 байт каждый раз. при печати строки с помощью: printf («строка, которая читается:% s \ n», буфер); вывод: строка, которая читается, является b . Я не понимаю, почему в конце строки получают эти значения? при печати строки с помощью: printf («строка, которая читается:% c \ n», buffer [0]); Я получаю вывод записи без значений. , пожалуйста, объясните мне почему.Печать строки с% s печатает неверные данные
код
#include <stdio.h>
#define LONGNUM 1
void main(int argc,char *argv[])
{
FILE * src;
FILE * dst;
int num;
char buffer[LONGNUM];
// argc is the number of the elements in argv
// the first argv element is the name of the program
if(argc < 3){
printf("prototype error <source path> <dest path>\n");
return;
}
printf ("source path is : %s \n",argv[1]);
printf ("dest path is : %s \n",argv[2]);
src = fopen(argv[1],"r");
while(!(feof(src))){
num = fread(buffer,1,1,src);
printf("the number of items read %d\n",num);
printf("the string that read is %s\n",buffer);
//printf("the string that read is %c\n",buffer[0]);
}
}
Я хотел бы, чтобы вы мне посоветовать, что это способ записи, чтобы сделать это. Спасибо.
'% s' требует не менее двух байтов - поэтому' LONGNUM' должно быть не менее 2, и вам нужно будет указать '% 1s', чтобы прочитать один символ в строке. Вы можете использовать '% c' для чтения одного символа, но ваша строка не будет завершена нулем. Более разумно, установите 'LONGNUM' на 128 или 4096 или что-то еще большое. –
while (! (Feof (src)) неправильно, потому что он проверяет что-то, что не имеет значения, и не может проверить что-то, что вам нужно знать. В результате вы ошибочно выполняете код, который предполагает, что он обращается к данным, которые были читайте успешно, когда на самом деле этого никогда не было. –
@SumitGemini: стандартный вопрос x-ref ['while (! feof (file))' всегда ошибочен] (http://stackoverflow.com/questions/5431941/while -feof-file-is-always-wrong). –