Цикл должен прекращаться после пробела, но программа не реагирует и не выходит из цикла - C (СИ)

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

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

#include <stdio.h>
int main()
{
    char num[10];
    FILE *file;
    if ((file = fopen("1.txt", "w")) == NULL)
        printf("File can not open or create\n");
    else
    {
        for (;;)
        {
            scanf("%s", num);
            if (num == ' ')
                break;
            fprintf(file, "%s", num);
        }
    }
    fclose(file);
}
Цикл должен прекращаться после пробела, но программа не реагирует и не выходит с цикла. Подскажите пожалуйста почему так.

Решение задачи: «Цикл должен прекращаться после пробела, но программа не реагирует и не выходит из цикла»

textual
Листинг программы
#include <stdio.h>
int main()
{
    char num[10];
   char c;
   int i;
    FILE *file;
    if ((file = fopen("1.txt", "w")) == NULL)
        printf("File can not open or create\n");
    else
    {
        for (i=0;;i++)
        {
            c=getchar();
            if (c == ' ')
                 break;
           num[i]=c;
        }
       num[i]=0;
       fprintf(file, "%s", num);
   }
    fclose(file);
}

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

  1. В начале программы подключается стандартная библиотека ввода-вывода .
  2. Затем определена функция main(), которая является точкой входа в программу.
  3. Создаются переменные:
    • char num[10] - массив символов на 10 элементов для хранения числового значения;
    • char c - символ, который будет использоваться в цикле;
    • int i - переменная счетчик для цикла;
    • FILE *file - указатель на файл, который будет использоваться для записи данных.
  4. Выполняется проверка на открытие файла 1.txt в режиме записи w. Если файл не может быть открыт или создан, выводится сообщение об ошибке.
  5. Если файл успешно открывается, выполняется цикл for, который будет выполняться до тех пор, пока не встретит пробел.
  6. Внутри цикла считывается очередной символ с помощью функции getchar().
  7. Если считанный символ является пробелом, выполняется операция break, чтобы выйти из цикла.
  8. Если считанный символ не является пробелом, он добавляется в массив num.
  9. После окончания цикла, в массив num добавляется нулевой символ, чтобы обозначить конец строки.
  10. Записанное значение в массиве num затем записывается в файл с помощью функции fprintf().
  11. В конце программы файл закрывается с помощью функции fclose().
  12. Значение переменной file не используется в коде, но оно должно быть равно NULL после вызова функции fclose().

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


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

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

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