Сохранение строк в файл - C (СИ)
Формулировка задачи:
Программа должна записывать строки в текстовый файл. При вводе n gets считывает n-1 строк в файл. Почему это происходит вроде в цикле ошибок нет?
// edit.cpp: главный файл проекта. #include "stdafx.h" #include "stdio.h" #include "conio.h" #include "stdlib.h" using namespace System; void vvod(int n); int main(array<System::String ^> ^args) { int n; printf("vvedite kol-vo strok"); scanf("%d", &n); vvod(n); return 0; } void vvod(int n) { char **p; int i; p= (char**)malloc(n*sizeof(char*)); FILE *fp; if((fp=fopen("f7.txt", "w+"))==NULL) { printf("Ошибка при открытии файла.\n"); exit(1); } for(i=0;i<n;i++) { p[i]= (char*)malloc(80*sizeof(char)); if(!p[i]) { printf("pamyat ne videlena"); exit (1); } gets(p[i]); fputs(p[i], fp); fputs("\n", fp); } fclose(fp); }
Решение задачи: «Сохранение строк в файл»
textual
Листинг программы
void vvod(int n); int main(void) { int n; printf("vvedite kol-vo strok: "); scanf("%d", &n); fflush(stdin); vvod(n); system("pause"); return 0; } void vvod(int n) { char *p = (char*)malloc(80*sizeof(char)); FILE *fp; if((fp=fopen("f7.txt", "w+"))==NULL) { puts("ГЋГёГЁГЎГЄГ* ïðè îòêðûòèè ГґГ*éëГ*.\n"); free(p); exit(1); } for(int i = 0;i<n;i++) { if(p == NULL)exit (1); gets(p); fputs(p, fp); fputs("\n", fp); } free(p); fclose(fp); }
Объяснение кода листинга программы
- Ввод количества строк для сохранения в файл
- Выделение памяти под строку
- Открытие файла для записи
- Проверка на успешное открытие файла
- Если файл не открылся, выводится сообщение об ошибке и программа завершается
- Если файл открылся, программа переходит к следующему этапу
- Запись каждой строки в файл
- Завершение работы с файлом
- Закрытие файла
- Освобождение памяти, выделенной под строку
- Конец программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д