Динамическое заполнение массива символов строками - PullRequest
0 голосов
/ 08 ноября 2018

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

char strArray[100][100];
char input[100];
scanf("%s",&input);
strArray[i] = input; //this is where i get the incompatible types assignment error

Как показано в комментарии, я получаю ошибку incompatible types in assignment. Мне нужно использовать массив char *strArray[100][100]? Разве strArray и input не относятся к одному и тому же типу (char [])? Один 1D, а другой 2D, очевидно, но я просто не указал 2-е измерение в присваивании, так как каждая строка хранится в новой строке. Что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

Вы можете использовать strcpy () для копирования каждого входного символа в strArray [i]. В этом случае вы бы использовали

strcpy(strArray[i], input);
0 голосов
/ 08 ноября 2018

Вы должны использовать strcpy():

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

int main(void)
{
    char strArray[100][100];
    char input[100];
    scanf("%s", input);
    strcpy(strArray[0], input);
}

Но никогда, на самом деле: никогда! используйте scanf() с "%s" без ограничения количества символов для чтения (ширина поля):

 scanf("%99s", input);
0 голосов
/ 08 ноября 2018

В C вы не можете назначать массивы в смысле char input1[100], input2[100]; input1 = input2. Вы можете просто скопировать содержимое, используя, например, strcpy для строк или memcpy для произвольных блоков памяти.

Таким образом, вам придется написать strcpy(strArray[i],input), при условии, что i является целым значением между 0 и 99 в вашем случае.

Кроме того, вам придется пропустить & в scanf("%s",&input) (т.е. записать scanf("%s",input)), потому что input уже затухает до указателя на символ.

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