以下是函數。我運行該程序,但該文件不會更改。追加到C中的文本文件
void add (char *name, int stock, int limit, float cost) {
FILE *afp = fopen("./inventory.csv","a+");
fprintf(afp,"%s,%d,%d,%f\n",name,stock,limit,cost);
fclose(afp);
}
編輯:哎呀,我只是沒有調用函數。
以下是函數。我運行該程序,但該文件不會更改。追加到C中的文本文件
void add (char *name, int stock, int limit, float cost) {
FILE *afp = fopen("./inventory.csv","a+");
fprintf(afp,"%s,%d,%d,%f\n",name,stock,limit,cost);
fclose(afp);
}
編輯:哎呀,我只是沒有調用函數。
我會先檢查您的文件是否存在或打開是否正確。檢查* afp是否指向NULL。最後檢查一下你的參數是否有要追加的值。
參數是否有值並不重要。問題說這個文件沒有改變。 –
這應該做的工作。
#include <iostream>
#include <string>
using namespace std;
void add(char* name, int stock, int limit, float cost)
{
FILE *afp;
errno_t err = fopen_s(&afp, "./inventory.csv", "a+");
if(!err)
{
fprintf(afp, "%s,%d,%d,%f\n", name, stock, limit, cost);
fclose(afp);
}
}
int main()
{
add("book", 12, 10, 15.2);
return 0;
}
文件不會改變?
這可能是因爲你不允許打開英寸我的意思是說,你不具備閱讀和附加到該文件所需的權利。
該文件不存在嗎?
這沒關係。正如MSDN參考所述,如果以read-and-append
模式打開文件,則該文件將在不存在的情況下創建。
打開閱讀和追加。附加操作包括在將新數據寫入文件之前移除EOF標記,並在寫入完成後恢復EOF標記。如果該文件不存在,則創建該文件。
你檢查了'afp == NULL'嗎? –
你真的在程序中調用上述函數嗎? – Cyclonecode
調試器說什麼 – pm100