Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Задачи к лаб.раб.3 17, 18, 19
ФАЙЛЫ 23_02_02
17 Создание файла и дальнейшая его загрузка с командной строки
//Рассматриваются два способа работы с файлом:
1 При отсутствии файла его создание производится (автоматически, системой) при выполнении записи в текстовый файл. Выполняется оператор
p = fopen(“ путь\имя-файла”, “w”);
2 Файл существует (например dfa21.cpp) и его открытие выполняется с командной строки. Обращение к командной строке можно выполнить двумя способами:
а) ПУСК, ВЫПОЛНИТЬ, ввести путь\bcw, OK bcw это bc в Windows
б) ПУСК, ПРОГРАММЫ,…Командная строка, ввести …, Enter
Полный текст обращения имеет вид (для примера):
а) ПУСК, ВЫПОЛНИТЬ, ввести d:\borlandc\bin\bcw, OK открывается окно Borland C++, File, Open, выделить имя файла dfa21.cpp, 2click в окне размещается текст программы dfa21.cpp.
б) ПУСК, ПРОГРАММЫ, Стандартные, Командная строка, открывается окно (темное) с мигающим курсором, набрать текст
d:\borlandc\bin\bcw d:\borlandc\bin\dfa21.cpp, Enter внутри окна Borlandc C++ располагается текст программы файла dfa21.cpp.
Ниже приведен пример работы с программой.
ПРОГРАММА ОТЛАЖЕНА ТОЛЬКО ПРИ К=0 !
Обратите внимание, в текст не передается нажатие клавишей перехода с одного языка на другой.
/*File is absent fopen(), fclose() - открытие, закрытие файла
putc()/fputc(), getc()/fgetc() - запись символа в .., считывание символа из файла
fputs(), fgets() - запись строки в .., считывание строки из файла
fseek(), ftell() - установка курсора на заданный байт в файле, возврат позиции курсора
fprintf(),fscanf()- файловый аналог printf(),scanf()
feof(), ferror()- возврат true в конце файла, при ошибке
rewind(), remove()- установка курсора в начало файла, файл стирается
fflush - очищается поток (буфер)
r, w, a - чтение, запись, добавка в конец в текстовый файл
rb, wb, ab - "-" в бинарный файл
r+, w+, a+ - открыть, создать, добавить в текстовый файл для чтения и записи, а+ - при отсутствии файла файл создается заново
r+b,w+b,a+b- тоже для бинарного файла
Программа отлажена только при к=0 //15
*/
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <conio.h> //22
int main(/*int argc, char *argv[2]*/)
{ FILE *fp;
char c;
int k, i=0; // При к=1 программа должна запускаться с командной строки
int argc; char *argv[1]; //28
m:printf("Введите k=(0/0) для работы (без/c) командной строки и затем нажмите Enter\n");
scanf(" %1d", &k);
// getch()
switch(k) //33
{ case 0: if((fp=fopen("d:\dfa201.doc","w"))==NULL)
{ printf("Файл не открыт_1\n");
exit(1);
}
break;
/* case 1: if(argc!=2)
{ printf("Не указано имя файла, argc=%d \n", argc);
exit(1);
}
if((fp=fopen(argv[1], "w"))==NULL)
{ printf("Не открывается файл, argv[1]=%d \n", argv[1]);
exit(1);
}
break;
*/ default: printf("Вас просят ввести 0 /*или 1*/\n"); ++i; if(i>=3)exit(1);goto m;
} //49
printf("Текстовый файл d:\dfa201 открыт! Вводите символ\n");
do { c=getche(); // Ввод символа с клавиатуры
putc(c,fp); // запись символа в файл
if (c=='$')break;
printf("\n to finish press symbol $\n");
} while (c != '$'); //55
printf("Ввод символов прекращен!\n\n");
fclose(fp);
getch();
return 0;
} //60
Ниже приведен результат посимвольного ввода текста
Компьютерное образование, как никакое, особенно чувствительно к непрерывности. Непрерывное компьютерное совершенствование позволяет пользователю сегодня своими руками создавать свое будущее!
Желаю успеха Вам в этом совершенствовании!
18 Открытие файла для записи или дозаписи текста. Ввод в конец файла дополнительного текста. Вывод содержимое файла на экран.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
int main(void)
{ FILE *fp;
char str[80];
// a+ - файл dfa201 создается заново
if ((fp=fopen("d:\dfa201.doc","a+"))==NULL)
{ printf("файл не открывается.\n");
exit(1);
}
/* rewind(fp);
while(!feof(fp))
{ fgets(str,79, fp);
printf(" str=%s\n",str);
}
*/
// Ввод дополнительного текста в файл
do { printf(" Введите текст. В конце ввода нажмите Enter\n");
gets(str); //printf(" str=%s\n",str); Вводится строка текста с клавиатуры
strcat(str, "\n"); // Добавлен символ перехода \n
fputs(str, fp); // Запись в конец файла dfa201
} while(*str!='\n');
// Вывод результата на экран
rewind(fp); // Установлен курсор в начало файла
while(!feof(fp))
{ fgets(str, 79, fp); // Построчное считывание текста с файла
printf(str); // Построчный вывод на экран
}
return 0;
}
19 Работа с функциями fprintf() и scanf() с файлами
#include <stdlib.h>
int main(void)
{ FILE *fp;
char s[80];
int t;
// 10
if ((fp=fopen("d:\dfa202","w"))==NULL)
{ printf("Файл не открывается.\n");
exit(1);
}
printf(" Введите c клавиатуры строку (или несколько) и целое число (или несколько)");
fscanf(stdin,"%s %d ",s,t );
fprintf(fp,"%s %d ",s, t );/*запись в файл */
fclose(fp); // 20
if ((fp=fopen("d:\dfa201","r"))==NULL)
{ printf("Файл не открываетсяю\n");
exit(1);
}
fscanf(fp,"%s %d",s,&t);// Считывание с файла
fprintf(stdout, "%s %d",s,t);// Вывод на экран
return 0; //30
}
PAGE 4