Получение ввода для массивов символов - PullRequest
0 голосов
/ 23 сентября 2011

Я кодировал программу, чтобы найти самую длинную общую подпоследовательность на сегодняшний день, и я собирал элементы каждой последовательности в массив символов. но я столкнулся с небольшой проблемой. Я использовал цикл for, чтобы получить элементы, но неважно, насколько я установил количество итераций, которые цикл должен выполнять, он всегда завершается после 5 итераций. Массив, в который вводились данные, был массивом размера 10, поэтому с размером массива проблем не возникало. Я написал небольшую тестовую программу для проверки, и даже в тестовой программе циклы for, которые получают данные для массива символов, всегда завершаются после 5 итераций. Почему? (Я вынужден использовать Turbo C ++ в своей лаборатории)

#include<stdio.h>
void main()
{
     int i;
     char s[10];
     for(i=0;i<10;i++)
     scanf("%c",&a[i]);
 }

Приведенный выше код был тестовой программой. Цикл цикла завершился и здесь после 5 итераций!

Ответы [ 3 ]

2 голосов
/ 23 сентября 2011

Символы новой строки ('\n') также являются символами.Если вы введете H, <return>, e, <return>, l, <return>, l, <return>, o, <return>, они введут 10 символов.

1 голос
/ 23 сентября 2011

Дай угадаю, ты нажимаешь return после каждого символа?Вызов scanf() тоже их прочитает ...

1 голос
/ 23 сентября 2011

Намного лучше просто прочитать весь массив как одну строку, все сразу:

char s[10];
fgets(s, sizeof s, stdin);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...