0
#include <stdio.h>
int main(){
    char c;
    int len=0, k=0;
    printf ("Input the length of the array:\n");

    scanf("%d", &len);
    char str[len];

    for(int i = 0; i<len; i++){
        printf("a[%d] = ", i);
        scanf("%c", &str[i]);
    }
    printf("Result: \n");

    while(str[k] != '\0'){
        printf("%c", str[k]);
        k++;
    }



    getchar();
    getchar(); 
}

После того как запускаю программу, получаю a[0] = a[1] = , т.е. почему то пропускается 1 ввод. Что подскажете с этим можно сделать ?

  • scanf(" %c", ...) (т.е. добавьте пробел перед в формате. Пробельные символы, в т.ч. \n будут пропущены) – avp Nov 25 '21 at 20:40
  • @Harry, imho вы предложили ответ не на этот вопрос. Тут же дело не только в оставленном в потоке \n, но и в существенной разнице поведения "%c" и *" %c"* (всего один пробел, а ведет себя совсем не так...) – avp Nov 25 '21 at 20:52
  • @avp Проблема же именно в том, что конец строки в буфере остался и потом читается, нет? Нет, если вы настаиваете, я проголосую за переоткрытие, но, по-моему, это как раз та же проблема. Кстати, вы не хотите этот момент про %c дописать в качестве ответа в тот вопрос, на который ссылка? – Harry Nov 25 '21 at 21:06
  • @Harry, уже в первом комментарии я написал про пробел и scanf, надеюсь ТС-у (после прочтения вашего ответа по отсылке) уже все будет понятно. Так не будем разводить лишнюю тягомотину – avp Nov 25 '21 at 21:13
  • @avp И все же мне кажется полезным ответ по ссылке о пробеле. Просто личная просьба... :) – Harry Nov 26 '21 at 04:36
  • @Harry, конечно (лишних знаний не бывает) – avp Nov 26 '21 at 08:52

0 Answers0