Я использую 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' для файлов. –