Проблема вставки массива строк - PullRequest
0 голосов
/ 13 сентября 2011

Я хочу создать строковый массив, в котором пользователь будет вводить данные, а данные будут храниться в массиве. Я понятия не имею, как это сделать (я читал несколько книг по Си) Любая помощь будет оценена Что я пробовал до сих пор:

int choice;
    printf("enter the number of the strings: ");
    scanf("%d",&choice);
char **str=(char **)malloc(100);
    int i;



    for(i=0;i<choice;i++)
    {
        printf("enter %dth element ",i+1);
            str[i]=(char *)malloc(10);
        scanf("%s",str[i]);
    }
    printf("%s",str[0]);

Ответы [ 3 ]

1 голос
/ 13 сентября 2011
You will have to allocate and initialize space for each string before reading them in. If you know he length of your input string then malloc/calloc that much space else guess a size but that would be wastage of space.

for(i=0;i<choice;i++)
     {
         printf("enter %dth element ",i+1);
         str[i] = malloc(sizeof(char)*length);
         memset(str[i],0,length);
         scanf("%s",str[i]);
     }  
1 голос
/ 13 сентября 2011

Вы не выделяете пробелы для строк.Если вы в порядке с ограниченными массивами, вы можете определить str как char str[100][128], чтобы иметь от 100 строк до 128 символов в каждой.По крайней мере, до тех пор, пока вы не изучите базовое динамическое распределение.

0 голосов
/ 13 сентября 2011

Если я правильно читаю, вы определили указатель на массив из 100 символов.То, что вы действительно хотите, это массивы 'Choice' длиной 100 символов, я думаю, char str[choice][100]

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

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