неожиданный результат при подсчете длины слова в c при использовании цикла for - PullRequest
1 голос
/ 02 июля 2019

Я учу язык, и программа рассчитывает не считать символов.

вот код

#include <stdio.h>

int main(void) {
    // your code goes here
    double nc;
    for (nc=0;getchar() != EOF;nc++);
    printf("%.0f\n", nc);

    return 0;
}

ввод

''

вход в нет.

вывод, который я получаю, равен 1.

онлайн-компилятор результат

не должен выводиться равным 0, а не 1. не может понять, почему это происходит.

спасибо

Ответы [ 2 ]

4 голосов
/ 02 июля 2019

Если вы приложите немного больше усилий к программированию, добавив пару строк кода, все будет ясно:

#include <stdio.h>

int main(void) {
    // your code goes here
    int nc;
    int c;
    for (nc=0;(c = getchar()) != EOF;nc++)
    {
        printf("The char is '%c' code: 0x%02x\n", c >= 32 ? c : '.', c);
    }
    printf("%d\n", nc);

    return 0;
}

https://ideone.com/jfGK7h

И тайна разгадана.Вы нажали ввод в поле ввода ideone, и у вас появилась новая строка.

1 голос
/ 03 июля 2019

Как вы ввели этот ввод ?

Если вы нажмете клавишу <enter> на клавиатуре, то вы получите один \n символ, что приведет к этому ответу.

Попробуйте это:

$ a.out
<Ctrl-D>
0
$ _

($ - это приглашение, а <Ctrl-D> - это способ не вводить данные с терминала Unix). Конечно, a.out - это имявашей программы (вы не показали, как она называется)

Кстати, почему вы заканчиваете вывод в \t в printf() ???\t является символом табуляции, а не новой строкой .... 8-.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...