我使用getchar()和loop來獲取文本,並使用fputc()放入文本文件,但它總是在寫入文本文件後將第一行留空。當字符輸入是點(。)時,循環停止。我如何刪除第一行?fputc在插入文本之前將第一行留空
更新(12/29/2016):我用DevC++和代碼運行良好,沒有創建一個空的空白,但我的VisualStudio2015有問題。
舉例:創建一個名爲test.txt
輸入文件:這是一個文本。
輸出:(在文本文件)
[空行]
這是一個文本
void writeFile(char *fileName){
FILE *fp;
fp = fopen(fileName, "wt"); //write text
if (fp == NULL) {
cout << "Failed to open" << endl;
fclose(fp);
}
else {
int i = 0;
char c = '\0';
cout << "Enter a text and end with dot (.): ";
fflush(stdin);
//c = getchar();
while (c != '.') {
fputc(c, fp);
c = getchar();
}
cout << "Written successfully" << endl;
fclose(fp);
}
}
嘗試扭轉)的的fputc的順序(和的getchar()線。 –
'fflush(stdin)'不會刷新輸入流,而是用於輸出流。嘗試'fflush(stdout)'。 –
爲什麼使用C++流('cin','cout')和C風格流('FILE *')? *不要跨越流。*使用'std :: ifstream'作爲文件。 –