Я хочу прочитать некоторый строковый ввод от пользователя и записать его в файл. Сейчас я делаюC - сохранение пользовательского ввода в динамическом массиве символов?
char name[25];
scanf("%s", name);
int handle = open("./visitors.txt", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);
if (handle < 0){
printf("File error.\n");
return;
}
lseek(handle, -sizeof(name), SEEK_END);
write(handle, name, sizeof(name));
Это, конечно, не прав, так как большую часть времени пользователь не запишет 25 символов, только меньше, поэтому, когда пользователь вводит 5 символов, остальные 20 будут быть пустым, и в итоге у меня есть 5 символов, которые пользователь вложил, и 20 таблеток в моем выходном файле. Как я могу убедиться, что в файл записывается только пользовательский ввод?
Читая руководство по эксплуатации 'scanf'? '% s' приводит к завершению вывода. –
'-sizeof (name)' должно быть '- (off_t) sizeof (name)' –
@ M.M Не имеет значения. –