Из заглавных букв маленькие, а из маленьких заглавные - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Короче говоря, задача такая. Надо, чтобы программа принимала данные из файла, которые, по сути являются строками. Например: Hello world! JavaScript language 1.8 A letter Нужно сделать так чтобы сообщение изменилось таким образом: hELLO WORLD! jAVAsCRIPT LANGUAGE 1.8 a LETTER т.е. чтобы заглавные буквы стали маленькими, а маленькие заглавными. Для этого я написал условную функцию
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++;
        }
    }
}
Я её проверял - рабочая! Проблема у меня возникает с тем, как считывать строки из файла и записывать их в массив, который и будет перенаправляться в функцию, которую я написал выше. Честно говоря, бьюсь и не могу понять как это сделать. Мой первый вариант функции main() выглядел так
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;
}
Не работает такая штука, что то не так с fscanf. Пробовал массу вариантов, но не получается. Понимаю, что в деле чтения строк из файла я дуб дубом пока что, и вы моя последняя надежда! Помогите! HELP! SOS!
Упс, функция от чего-то тоже не работает...
Вот рабочий вариант функции, сорри))
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);

Объяснение кода листинга программы

  1. В первой строке объявлена переменная типа char с именем line и размером 128 байт.
  2. Затем следует цикл while, который будет выполняться до тех пор, пока функция fgets не вернет NULL (что означает конец файла).
  3. Внутри цикла while находится блок кода, который будет выполняться для каждой строки в файле.
  4. В этом блоке кода происходит некая обработка строки, но точный код не указан.
  5. После окончания цикла while следует вызов функции fclose, которая закрывает файл.
  6. Файл, который нужно закрыть, передается в функцию fclose через параметр file.
  7. Если файл был успешно закрыт, функция fclose вернет 0.
  8. Если при закрытии файла произошла ошибка, функция fclose вернет 1.
  9. В случае успешного выполнения цикла while и закрытия файла, программа продолжит работу.
  10. Если при закрытии файла произошла ошибка, программа прервется и завершится.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5
Похожие ответы