Проверка расширений файлов - C (СИ)
Формулировка задачи:
// Lab7=.CPP.cpp : Defines the entry point for the console application. // Заданы 6 имен файлов,написанных на языке Си, с расширением *.cpp // Проверить, правильно ли написаны имена программ и если нет, то исправить, поставив нужное // расширение. #include "stdafx.h" #include "string.h" #include "conio.h" void cpp(char *S); int _tmain(int argc, _TCHAR* argv[]) { char stroka[45]; char *p; gets(stroka); cpp(stroka); puts(stroka); getch(); return 0; } void cpp(char *S) {char *P; P=strstr(S,".cpp"); if(P) printf("file is good\n"); else P=strchr(S,'.'); if(P) { *P=NULL; strcat(S,".cpp"); } else strcat(S,".cpp"); }
Программа работает, но для одного ввода файла,а не 6...не очень понимаю, в какое место написать цикл. Т.е. на экране программа д.б. такой:
sfdg.cpy
sfg.cpp
gh.cfh
hfg.cse
gfh.tgh
dhgf.cpp
sfdg.cpp
sfg.cpp
gh.cpp
hfg.cpp
gfh.cpp
dhgf.cpp
Решение задачи: «Проверка расширений файлов»
textual
Листинг программы
void cpp(char *S) { int ok = 0; const char* ext = ".cpp"; char *P=strrchr(S, '.'); if(P) { ok = !strcmp(p, ext); printf("file is %s!\n", (ok) ? "good", "bad"); if ( !ok ) { strcpy(P, ext); } } else { strcat(P, ext); } }
Объяснение кода листинга программы
- В функции
cpp
передается строкаS
в качестве аргумента. - Объявлена переменная
ok
типаint
со значением0
. - Объявлена переменная
ext
типаconst char*
со значением.cpp
. - В переменной
P
содержится последний символ строкиS
илиNULL
, если его нет. - Если
P
неNULL
, то выполняется проверка расширения файла. - Если расширение файла соответствует
.cpp
, то переменнаяok
становится1
. - Выводится сообщение о статусе файла.
- Если расширение файла не соответствует
.cpp
, то вP
добавляется расширение.cpp
. - Если
P
равенNULL
, то вP
добавляется расширение.cpp
. - Если расширение файла не соответствует
.cpp
, то выводится сообщение о том, что файл не является допустимым.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д