EOF срабатывает только после 2-х комбинаций ctrl+Z - C (СИ)

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

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

EOF в функции getline срабатывает только после 2-х комбинаций ctrl+Z. Подскажите, пожалуйста, как исправить и в чем ошибка.
#include <stdio.h>
#define MAX 1024
 
int getline(char s[], int lim)
{
    int c, i;
 
    for(i = 0; i < (lim-1) && (c = getchar()) != EOF; i++)
    {
        s[i] = c;
    }
    s[i] = '\0';
    return i;
}
 
void a(char s[], char n[])
{
    int i = 0;
    int j = 0;
    while(s[i] != '\0')
    {
        if(s[i] != ' ' || s[i] != '\n' || s[i] != '\t')
        {
            n[j] = s[i];
            i++;
            j++;
        } 
        while(s[i] == ' ' || s[i] == '\t') 
        {
            if(s[i+1] == ' ' || s[i+1] == '\t')
            {
                i++;
                n[j] = ' ';
            } else 
              {
                n[j] = ' ';
                i++;
                j++;
              }
        }
        while(s[i] == '\n') 
        {
            if(s[i+1] == '\n')
            {
                i++;
                n[j] = ' ';
            } else 
              {
                n[j] = s[i];
                i++;
                j++;
              }
        }
        n[j] = '\0';
    }
 
}
 
void main(void)
{
    int len;
    char line[MAX];
    char new[MAX];
 
    while((len = getline(line, MAX)) > 0) a(line, new);
    printf("\n%s", new);
}

Решение задачи: «EOF срабатывает только после 2-х комбинаций ctrl+Z»

textual
Листинг программы
  char s[100];
  int n = scanf("%s", s);
  printf("%d %s\n", n, s);

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

  1. Создается массив s типа char размером 100 символов.
  2. В scanf указывается формат %s, который означает, что нужно считать строку символов.
  3. scanf считывает строку символов из стандартного ввода и сохраняет ее в массиве s.
  4. printf выводит количество символов, которые были считаны, и саму строку.

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


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

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

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