[英]Adding Strings to a Text File in C
我正在制作一個雜貨清單程序,我想在文本文件的下一個可用行中包含一個用戶輸入的字符串。 現在,這會將字符串添加到文件中,但隨后會在多個空格中放入隨機字符,然后,如果我輸入其他內容,它將不在下一行。
void AddToFile(FILE *a) {
char addItem[20];
printf("Enter item: ");
scanf("%s", &addItem);
fwrite(addItem, sizeof(addItem), 1, a);
}
這行應該是:
// strlen instead of sizeof
fwrite(addItem, strlen(addItem), sizeof(char), a);
您的代碼始終寫入20個字符,而不是字符串具有的實際字符數。
除了pivotenig指出的更正之外, fwrite()
不會在文件中寫入換行符。 在fwrite()
之后編寫新行,或將其附加到fwrite()
之前的addItem
緩沖區中。
您應該通過限制復制到buf
的字符數來防止緩沖區溢出:
scanf("%19s", addItem);
在當前示例中,如果您嘗試寫一個超過20個字符的項目,則將遇到麻煩,因為scanf將覆蓋未分配的內存。 稍作改進的版本將是:
scanf("%19s",&addItem);
這樣,至少您不會覆蓋隨機內存。
編輯:感謝傑克指出\\ 0也必須寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.