2013-04-13 3 views
1

Допустим, у меня есть два полукокса массивыC сравнения массив символов

char names[] = { "Jen" , "Will" , "Smith" } ; 
char names2[] = {"Sam" , "Will" , "Dave"}; 

, и я хочу, чтобы проверить, если оба массива имеют общий элемент в общем индексе , например, оба названия [] и names2 [] есть слово «будет» в положении 1 (нулевой основе)

Я пытаюсь сделать это с таким образом

for(i = 0; i< 3; i++) 
{ 
    if(strcmp(names[i],names2[i]) == 0) 
    printf("Same"); 
} 

, но я получаю эту ошибку «найден символ, где строка, как ожидается,» какие-нибудь идеи?

+1

Ну, вы слишком много скобок. И после Дэйва тебе не хватает знака. Вы не достигнете очень большого уровня, если прибегаете к SO для каждой тривиальной синтаксической ошибки в ваших ошибках кода ..., которые, вероятно, определил ваш компилятор. –

+1

Вы забыли закрывающие кавычки для '' Dave''. – Kninnug

+0

@ JimBalter да, я написал код здесь слишком быстро, в моем коде это нормально, и я все еще получаю ошибку – dotnetter

ответ

1

обычно в с объявляет строку как имя полукокса [], если и создает массив строк означает, что у г декларация должна быть голец имя [] []

2

char [] - массив char, то есть строка; что вы хотите, это массив указателей на строки литералов, поэтому она должна быть:

const char * names[] = { "Jen" , "Will" , "Smith" } ; 
const char * names2[] = {"Sam" , "Will" , "Dave"}; 

то strcmp код должен компилироваться.

Обратите внимание, что если вместо этого вы должны были работать с пользователем при условии строки (а не только строковых литералов) вам придется либо прибегнуть к char * [] и динамического распределения памяти, либо в большой двумерный массив символов (char names [STRNUM][STRMAXLENGHT]) ,

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