【发布时间】:2016-11-04 10:50:39
【问题描述】:
我想从用户那里读取一些字符串输入并将其写入文件。现在我在做
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 没有任何区别。