Я получаю строку с клавиатуры, в C и Linux (Ubuntu 14.04):Выход из PRINTF вызова не адресности отображается на экране
char string[STR];
fgets(string, STR, stdin);
И я заметил, что strlen()
не работает ,
Итак, я решил сделать следующее:
int i = 0;
while (string[i] != '\0') {
printf("\nchar: %c\n", string[i]);
i++;
}
printf("\nFinished");
I типа "hello"
в качестве входных данных, а выход заключается в следующем:
char: h
char: e
char: l
char: l
char: o
char:
"Finished"
никогда не печатается.
Я не вижу, в чем проблема. Я подозреваю, что это связано с тем, что ввод с клавиатуры не завершен '\0'
?
Вчера я работал с Windows и отлично работал со строками.
EDIT: STR определяется как 128.
«STR» достаточно большой, чтобы '' hello \ 0'' вписывался в 'string [STR]'? –
Попробуйте '' \ n'' после "Готово". – chux
Что значит «' strlen' не работает »? Возвращает ли оно значение, которого вы не ожидаете? Это крушение? Это делает цикл программы бесконечно? Быть конкретной. – Badministrator