2015-05-18 4 views
1

Я очень новичок в программировании на C, и я пытаюсь напечатать массив строк. Я могу ввести ввод достаточно легко, но затем, когда он пытается распечатать массив, программа перестает отвечать. Любая помощь приветствуется, спасибо.C Распечатайте строковый массив

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

void main() 
{ 
int a, b; 
char answer[256]; 

for(a=1; a<=20; a++) 
{ 
    scanf("%s", &answer[a]); 
} 

for(b=1; b<=20; b++) 
{ 
    printf("%s\n", answer[b]); 
} 
} 

Обновление: Спасибо за все быстрые ответы всем, программа работает гладко сейчас!

+3

Это не массив строк, а массив символов. прочитайте учебник для уточнения. – KevinDTimm

+0

у вас нет массива строк, но массив символов. поэтому похоже, что вы читаете только первый символ каждой строки, которую вы пытаетесь прочитать – jcjunction

ответ

5
int a, b; 
char answer[20][256];//<- array of char[256] 

for(a=0; a<20; a++)//<- 0 origin 
{ 
    scanf("%255s", answer[a]);//<- Reading of the string with a maximum 255 characters (One is reserved for the termination character('\0')) 
} 

for(b=0; b<20; b++) 
{ 
    printf("%s\n", answer[b]); 
} 
4

1)

char answer[256]; 

представляет собой массив символов, а не строк. С тем, Вы писали остальную часть кода, вам потребуется массив массивов, таких как:

char answer[100][256]; 

2) scanf() ожидает char* для строки формата %s. Таким образом, вы только должны:

scanf("%s", answer[a]); 

3) main() должен возвращать int. Так должно быть: int main(void) или эквивалент.

4) Еще одна проблема, у вас есть вероятно ошибались (смотрит на свои петли), что индексация в С нуля, не начинается с 1.

1

Использование

char answer[256]; 

вы получаете только массив символов, который можно использовать для хранения строки. Для того, чтобы сохранить массив строк, используйте:

char answer[20][256]; 

Это может быть использовано для хранения 20 строк до тех пор, как ни одна из этих строк не длиннее 255 символов.

void main() 
{ 
    int a, b; 
    char answer[20][256]; 

    /////////////////////////////////////////// 
    // Notice the difference in the value of a. 
    /////////////////////////////////////////// 
    for(a=0; a<20; a++) 
    { 
     scanf("%s", answer[a]); 
    } 

    for(b=0; b<20; b++) 
    { 
     printf("%s\n", answer[b]); 
    } 
} 
Смежные вопросы