2013-07-04 2 views
-3

Помогите мне избавиться от этой проблемы. Я использую GCC на ubuntu12.04. Пока я пишу эту программу, чтобы получить 5 строк с клавиатуры n, напечатайте эти строки на экране. Программа скомпилирована, но во время выполнения она берет строки с клавиатуры, но печатает только последнюю строку. Программа, которую я написал ниже:Двухмерный массив символов в C

void main()  
{ 
    char names[10]; 
    int i,j; 

    for(i=0;i<5;i++) 
    { 
     printf(" Enter a name which you want to register\n"); 
     scanf("%s",names); 
    } 
    for(i=0;i<5;i++)  
     printf(" the names you enter are %s\n", names); 

} 
+6

Двухмерный массив представляет собой массив массивов. Подумайте об этом некоторое время. –

+0

У вас есть массив, который может содержать 10 символов в вашем коде – Alexis

+1

Фактически я начинаю программировать. так что не возражаете, если мой вопрос слишком дикий или хромой ...... – ranaarjun

ответ

8

1) Вы можете использовать массив символов 2D таким образом

char name[5][100]; 

каждая строка в 2D массив является массивом полукокса с размером = 100

for(i=0;i<5;i++) 
{ 
    printf(" Enter a name which you want to register\n"); 
    scanf("%99s",names[i]); 
} 

2) Вы можете использовать массив указателей таким образом

char *name[5]; 

Каждый элемент массива является указателем на строку (массив символов). Вы должны назначить каждый указатель на массив в пространство памяти перед вызовом scanf()

for(i=0;i<5;i++) 
{ 
    names[i]=malloc(100); 
    printf(" Enter a name which you want to register\n"); 
    scanf("%99s",names[i]); 
} 

3) при компиляции с GCC и GCC версии> 2,7, то ваш scanf() может выделить память с помощью "%ms" вместо "%s"

char *name[5]; 
for(i=0;i<5;i++) 
{ 
    printf(" Enter a name which you want to register\n"); 
    scanf("%ms",&names[i]); 
} 
Смежные вопросы