2013-03-10 3 views
0
#include<stdio.h> 
int main(){ 
int i=0,j=0; 
char a[5][2]; 
for(i=0;i<5;i++){ 
    for(j=0;j<2;j++){ 
    scanf("%c",&a[i][j]); 
    } 
} 
for(i=0;i<5;i++){ 
    for(j=0;j<2;j++){ 
    printf("\n %c \n",a[i][j]); 
    printf("\t"); 
    } 
    printf("\n"); 
} 
return 0; 
} 

я/р: гу с.о. ес2d массив в С р

я не получаю никакого вывода.

Я пробовал простую программу на 2-х массивах. Я не мог получить вывод, и вход не принимает 5 * 2 символов, вместо этого он принимает только 4 * 2 символа.

+0

Это может быть проблема с чтением символа с помощью 'scanf', проверьте http://stackoverflow.com/questions/5556622/problem-with-character-array-input-and-output-in-c – Rohan

+0

Вы попадаете в игру после каждой строки ввода? Потому что я запускаю вашу программу, и она работает безупречно. – jrd1

+0

Собираетесь ли вы по каждому основному индексу в вашем массиве, содержащем два символа в каждой * паре *? Если да, есть ли какая-то конкретная причина, по которой вы предоставляете 4 пары и (пытаетесь) сканировать 5 пар на входе? – WhozCraig

ответ

1

вставьте мой код, дайте пробел до% c.

#include<stdio.h> 
    int main(){ 
    int i=0,j=0; 
    char a[5][2]; 
    for(i=0;i<5;i++){ 
     for(j=0;j<2;j++){ 
     scanf(" %c",&a[i][j]); 
     } 
    } 
    for(i=0;i<5;i++){ 
     for(j=0;j<2;j++){ 
     printf("\n %c \n",a[i][j]); 
     printf("\t"); 
     } 
     printf("\n"); 
    } 
    return 0; 
    } 
+0

проверьте и скажите мне. – Amrendra

+0

Да. Его работа прекрасна с изменением. Но почему нам нужно предоставить пространство до% c в scanf. – Angus

+0

@Angus, чтобы сообщить 'scanf()', чтобы игнорировать ненулевые или более пробельные символы на пути к запрошенному форматированному типу ввода. – WhozCraig

-3

Причина - тип данных, которые вы использовали в scanf ("% c").

Поскольку в таблице, NewLine, Space имеются все доступные символы. Так что, если вы вставляете некоторые вещи, как:

a \n 

а [0] [0] будет 'а', а [0] [1] будет '\ п'.

Этот вывод можно проверить, если вы используете следующий код тест:

#include<stdio.h>                               
int main(){ 
    int i=0,j=0; 
    int a[5][2]; 
    for(i=0;i<5;i++){ 
    for(j=0;j<2;j++){ 
     printf("i=%d,j=%d:\n",i,j); 
     scanf("%d",&a[i][j]); 
    } 
    } 
    for(i=0;i<5;i++){ 
    for(j=0;j<2;j++){ 
     printf("\n %d \n",a[i][j]); 
     printf("\t"); 
    } 
    printf("\n"); 
    } 
    return 0; 
} 
+0

Это даже не будет * компилировать *. – WhozCraig

+0

Не только вы не прочитали вопрос, вы также предложите использовать плохую практику (используя 'malloc' для временных ** и **, переводя свое возвращаемое значение). – 2013-03-10 08:28:43

0

В вас входных пространствах также рассматриваются как полукокс, из-за которой он кажущийся вам, что только 4 * 2 входа Принимается вход без пробела, и вы сможете ввести символ 5 * 2.

Смежные вопросы