Из заглавных букв маленькие, а из маленьких заглавные - C (СИ)
Формулировка задачи:
Короче говоря, задача такая. Надо, чтобы программа принимала данные из файла, которые, по сути являются строками. Например:
Hello world!
JavaScript language 1.8
A letter
Нужно сделать так чтобы сообщение изменилось таким образом:
hELLO WORLD!
jAVAsCRIPT LANGUAGE 1.8
a LETTER
т.е. чтобы заглавные буквы стали маленькими, а маленькие заглавными.
Для этого я написал условную функцию
Я её проверял - рабочая! Проблема у меня возникает с тем, как считывать строки из файла и записывать их в массив, который и будет перенаправляться в функцию, которую я написал выше. Честно говоря, бьюсь и не могу понять как это сделать.
Мой первый вариант функции main() выглядел так
Не работает такая штука, что то не так с fscanf. Пробовал массу вариантов, но не получается. Понимаю, что в деле чтения строк из файла я дуб дубом пока что, и вы моя последняя надежда! Помогите! HELP! SOS!
void converter (char mess[]){
int i=0;
char c;
while (mess[i])
{
c=mess[i];
if (islower(c)){
c=toupper(c);
putchar (c);
i++;}
else if(isupper(c)){
c=tolower(c);
putchar(c);
i++;
}
}
}int main(int argc, const char * argv[])
{
FILE *message = fopen(argv[1], "r");
char str[]="";
while(!feof(message)){
fscanf(message, 20, str);
converter(str);
}
fclose(message);
return 0;
}
Упс, функция от чего-то тоже не работает...
Вот рабочий вариант функции, сорри))
void converter (char mess[]){
int i=0;
char c;
while (mess[i])
{
c=mess[i];
if (islower(c))
c=toupper(c);
else if (isupper(c))
c=tolower(c);
putchar (c);
i++;
}
}
Ещё раз напомню суть проблемы, а то приходилось дополнять: Я не понимаю как сделать так, чтобы
считывалась строка из файла -> помещалась в массив(потом массив в функцию converter)
считывалась следующа строка из файла -> помещалась в массив
и так до конца файла.
Решение задачи: «Из заглавных букв маленькие, а из маленьких заглавные»
textual
Листинг программы
char line [128];
while ( fgets ( line, sizeof(line), file ) != NULL )
{
>>> твой код <<<
}
fclose (file);
Объяснение кода листинга программы
- В первой строке объявлена переменная типа char с именем
lineи размером 128 байт. - Затем следует цикл while, который будет выполняться до тех пор, пока функция fgets не вернет NULL (что означает конец файла).
- Внутри цикла while находится блок кода, который будет выполняться для каждой строки в файле.
- В этом блоке кода происходит некая обработка строки, но точный код не указан.
- После окончания цикла while следует вызов функции fclose, которая закрывает файл.
- Файл, который нужно закрыть, передается в функцию fclose через параметр file.
- Если файл был успешно закрыт, функция fclose вернет 0.
- Если при закрытии файла произошла ошибка, функция fclose вернет 1.
- В случае успешного выполнения цикла while и закрытия файла, программа продолжит работу.
- Если при закрытии файла произошла ошибка, программа прервется и завершится.