簡體   English   中英

在C中將字符串添加到文本文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM