2015-03-18 4 views
0

Это, вероятно, связано с указателями C, потому что это проблема с массивом.C присвоить индекс массива другому

Можно ли назначить индекс одного массива в другой:

int main() 
{ 
    char a[10]; 
    char b[3] = {'a', 'b', 'c'}; 
    int num = 1; 
    a[1 + num] = b[0]; 

    int i = 0; 
    for(i; i < 3; i++) 
    printf("%s", a[i]); 

    return 0; 
} 

Я думаю, что выход должен быть какой бы. которые я думаю, что было бы [(NULL), (NULL), а]

EDIT

сказать, что я добавить целочисленный массив с приведенным выше кодом:

int c[3] = {1, 2, 3}; 

У меня возникли проблемы с хранения значений в массиве а когда я пытаюсь сделать что-то вроде этого:

a[1 + c[0]] = b[0]; 

это в конечном итоге работает, как хорошо ...

Оказалось, что это была не моя проблема, спасибо за помощь, хотя

+0

Каков ваш желаемый результат? –

+2

'printf ("% s ", a [i]);' не должно быть 'printf ("% c ", a [i]);'? – John3136

+1

Вы хотите использовать '% c' не'% s'. Кроме того, вы должны инициализировать массив 'a', иначе вы будете печатать два неинициализированных символа. – JS1

ответ

3

Вы можете назначить это. В этом случае могут быть нежелательные символы в массиве . Итак, сначала вы назначаете 0 всем.

char a[10]={0}; 

Затем присвойте значение, которое вам нужно.

После этого во время печати, которые используют %c в printf.

for(; i < 3; i++) 
printf("%c", a[i]); 

Вы можете получить значение, присвоенное вами.

+0

0 и NULL - это не одно и то же. И NULL не является допустимым символом. – immibis

+0

Еще лучше: 'for (; i <3; i ++)' –

Смежные вопросы