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
выводит количество символов, которые были считаны, и саму строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д