Как я могу получить строку, используя scanf, как я хочу, чтобы это было? - PullRequest
0 голосов
/ 30 ноября 2018

Как я могу использовать scanf для чтения строки с пробелом ( без ввода )?И я также хочу, чтобы эта программа остановилась всякий раз, когда ввод EOF .

Я использовал следующий код:

int main()      //this is not the whole program
{
    char A[10000];
    int length;

    while(scanf(" %[^\n]s",A)!=EOF);
    {
        length=strlen(A);
        print(length,A); 
        //printf("HELLO\n");
    }


    return 0;
}

Но он читает два EOF (ctrl + Z) чтобы остановить программу. Кто-нибудь может дать мне какое-нибудь предложение?

1 Ответ

0 голосов
/ 30 ноября 2018

это чтение двух EOF (ctrl + Z), чтобы остановить программу

Нет.Возможно, вы дважды нажимаете ^ Z, но scanf() только «читает» один конец файла EOF.Именно так работает ваш интерфейс клавиатуры / ОС.Узнайте, как сигнализировать об окончании файла.

Другие изменения

char A[10000];
// while(scanf(" %[^\n]s",A)!=EOF);
// Drop final `;`  (That ends the while block)
// Add width limit
// Compare against the desired result, 1, not against one of the undesired results, EOF
// Drop the 's'
while(scanf(" %9999[^\n]", A) == 1) {
    length=strlen(A);
    // print(length,A); 
    print("%d <%s>\n", length, A); 
    //printf("HELLO\n");
}
...