Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2009, 21:01   #1
shturman_ivanov
Новичок
Джуниор
 
Регистрация: 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?
shturman_ivanov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами 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