Присвоение строки двумерному массиву - PullRequest
1 голос
/ 03 июня 2010
char in[100], *temp[10],var[10][10];
int i, n = 0,
double val[10];
var[0][]="ANS";

Я хочу присвоить строку переменной var [0] [0,1,2], которая является 'ANS', но не работает, и я не могу понять, где я ошибаюсь

Ответы [ 3 ]

2 голосов
/ 03 июня 2010

Возможно вместо использования

strncpy(var[0], "ANS", 3);
2 голосов
/ 03 июня 2010

Вы как бы ответили на свой вопрос. Вы хотите назначить var [0] [0,1,2,3] для "ANS", верно? Ну, «ANS» - это массив символов, ans [0,1,2,3] (не забывайте нулевой терминатор). Таким образом, вы должны назначить каждого в отдельности. В C строки не являются типом данных, это просто массив других переменных (точнее, символов). Вместо этого вы можете:

strcpy(var[0], "ANS");

Который сделает для вас побайтовую копию.

Однако есть некоторые подводные камни для strcpy. Во-первых, массив символов назначения (в данном случае var [0]) должен быть достаточно большим, чтобы содержать строку. Он не проверит это для вас (на самом деле это не так), поэтому, если вы не будете осторожны, вы можете вызвать переполнение буфера. Кроме того, источник должен иметь значение NULL.

1 голос
/ 03 июня 2010

Когда вы пишете

var[0][] = "ANS"

Компилятор пытается присвоить "ANS" переменной [0] [0], которая является местом только для одного символа.

Следовательно, вы должны использовать функцию strcpy. strcpy скопирует символ за символом.

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