![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 19.12.2009
Сообщений: 1
|
![]()
В текстовом файле все слова длиннее чем N символов заменить на указанные пользователем символы.
Код: main (int argc, char *argv[]) { int N; // limit simvolov int n; // kol_vo slovo lim char buf[100]; char slovo[100]; time_t tm; tm=time(NULL); #define FNAME1 argv[1] char fname[40] = FNAME; char temp_name[40] = TEMP; FILE *log, *text, *temp; puts ("Programma vedet otchet v faile <<protokol.log>>"); if ((log=fopen(fname, "rt"))==NULL) { puts ("...sozdanie faila protokola"); if ((log=fopen(fname, "wt"))==NULL) { puts ("Oshibka! Ne udalos' sozdat' fail protokola..\n Programma zavershaet svoyu rabotu!"); getchar(); exit(0); } else { puts ("Fail protokol sozdan uspeshno..."); fclose(log); } } if ((log=fopen(fname, "at"))==NULL) { puts ("Ne udalos' otkryit' fail protokola dlya dozapisi!"); puts ("Programma zavershayet svoyu rabotu!"); getchar(); exit(0); } else { fprintf(log, "################################## \n"); fprintf(log, "Programma uspeshno zapuschena\n"); fprintf (log, " %s", ctime(&tm)); } if (argc<4 || argc>4) { puts (" Vyi ukazali nevernyie argumentyi komandnoy stroki!"); puts (" Pravil'no\n ./[imya_programmyi] [imya_fayla.txt] [kol-vo_simvolov] [slovo_zamena]"); puts (" Vsego vyi dolgnyi ukazat' 4 argumenta komandnoy stroki!"); fprintf(log, "OSHIBKA! Ukazanyi nevernyie argumentyi komandnoy stroki!:\n", argv[1]); fprintf (log, " %s", ctime(&tm)); fprintf(log, "Zakritie programmy:\n"); fprintf (log, " %s", ctime(&tm)); fprintf(log, "<><><><><><><><><><><><><><><><><> \n\n"); puts (" Press ENTER"); getchar(); exit(0); } //Enter N: N=atoi(argv[2]); if (N<0 || N == 0 ) { puts(" Vyi ukazali nevernoe kolichestvo simvolov v slove!"); puts(" <<N>> doljno byit' ne men'she <<1>>!"); puts(" Po umolchaniyu N budet prisvoeno znachenie <<5>>"); N = 5; } else if (N >18) { puts ("WARNING!"); puts (" Vyi ukazali slishko bol'shoe kol-vo simvolov dlya zaenyi!"); puts (" Vozmozhno v fayle net takih slov..."); } if ((text=fopen(argv[1], "rt"))==NULL) { printf("Ne udalos' otkryit' fail <<%s>>.", argv[1]); puts ("\n Prover'te pravl'nost' vvoda imeni i nalichie fayla v kataloge!"); fprintf(log,"Ne udalos' otkryit' fail %s:\n", argv[1]); fprintf(log, " %s", ctime(&tm)); puts ("Programma zavershaet svoyu rabotu!"); fprintf(log, "Zakryitie programmyi:\n"); fprintf(log, " %s", ctime(&tm)); fprintf(log, "<><><><><><><><><><><><><><><><><> \n\n"); getchar(); exit(0); } else { printf ("Fail <<%s>> otkryit uspeshno!\n", argv[1]); fprintf(log, "Fail <<%s>> uspeshno otkryit:\n", argv[1]); fprintf(log, " %s", ctime(&tm)); } puts ("OBRABOTKA..."); // Create TEXT_2.TXT if ((temp=fopen(temp_name, "wt"))==NULL) { printf ("Oshibka sozdaniya faila <<%s>>!\n Programma zavershaet svoyu rabotu!", temp_name); getchar(); exit(0); } fprintf(log, "Poisk slov dlinnee chem %i simvolov...\n", N); fprintf(log, " %s", ctime(&tm)); n=0; while(!feof(text)) { fscanf(text, "%s", slovo); if ((strlen(slovo))>N) { n++; fprintf (temp, "%s ", argv[3]); } else {fprintf (temp, "%s ", slovo);} } if (n==0) { printf ("V faile %s ne naideno ni odnogo slova dlinnee chem %i simvolov..\n", argv[1], N); puts ("Sovet: poprobuyte umen'scit' velichinu <<N>>."); fprintf(log, "V faile %s ne naideno ni odnogo slova dlinnee chem %i simvolov...\n", argv[1], N); fprintf(log, " %s", ctime(&tm)); } else { printf (" Zameneno <<%i>> slov v faile <<%s>>.\n", n, argv[1]); fprintf(log, "Naideno <<%i>> slov dlinnee chem <<%i>> simvolov...\n", n, N); fprintf(log, " %s", ctime(&tm)); fprintf(log, "Zamena naidennyih slov na <<%s>>...\n", argv[3]); fprintf(log, " %s", ctime(&tm)); fprintf(log, "Zamena vyipolnena uspeshno! \n"); fprintf(log, " %s", ctime(&tm)); } fprintf(log, "Zakryitie faila <<%s>> proslo uspeshno:\n", argv[1]); fprintf (log, " %s", ctime(&tm)); fprintf(log, "Zakryitie programmyi:\n"); fprintf (log, " %s", ctime(&tm)); fprintf(log, "<><><><><><><><><><><><><><><><><> \n\n"); fclose(temp); fclose(text); fclose(log); Вопрос такой. Как можно заменить выделенный scanf? |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с файлами | JamS007 | Общие вопросы C/C++ | 4 | 27.06.2009 22:03 |
Работа с файлами | Technolog | Microsoft Office Excel | 1 | 27.03.2009 10:50 |
Работа с файлами | Maksi | Фриланс | 4 | 07.06.2008 11:38 |
Работа с файлами | Yar | Помощь студентам | 2 | 02.06.2008 08:03 |