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);
Объяснение кода листинга программы
- Создается массив
sтипаcharразмером 100 символов. - В
scanfуказывается формат%s, который означает, что нужно считать строку символов. scanfсчитывает строку символов из стандартного ввода и сохраняет ее в массивеs.printfвыводит количество символов, которые были считаны, и саму строку.