Я все время искал, как правильно сравнивать элементы char в массиве char, но у меня это не работает. Я пытаюсь сравнить первый символ в массиве символов с оператором (проверяя, существует ли + или -).
EDIT: увидел свою ошибку. Логическая ошибка в операторе if. Спасибо всем за такие быстрые ответы.
Сначала я попробовал это:
main(int argc, char *argv[]){
int i;
int len;
char input[10];
for(i = 1; i < 8; i++){
len = strlen(argv[i]);
strcpy(input,argv[i]);
//debug purposes
printf("%c\n",input[0]);
if(input[0] != '+' || input[0] != '-') {
printf("incorrect number format. %s has no sign.\nnow terminating.\n", input);
}// end if
}//end for
}//end main
Затем я прочитал еще несколько сообщений и увидел, что я должен сравнивать символы с помощью strcompare, поэтому я попробовал это: if( !strcmp(input[0],'+') || !strcmp(input[0],'-') )
Тем не менее, они все еще, кажется, не сравнивают должным образом. Я получаю ошибку сегментации с приведенным выше кодом, а с моим предыдущим кодом он печатал оператор, но все равно переходил в оператор if, говоря, что формат неверен. Я все еще довольно новичок в C, поэтому любые советы или подсказки о том, как я могу правильно сравнить эти символы, будут высоко оценены. Спасибо.
strcpy
опасен. Если параметр командной строки имеет более 9 символов, вы будете писать за пределамиinput
(неопределенное поведение). Вам лучше использоватьstrncpy
(или аналогичную функцию) или выделитьlen + 1
байт дляinput
. - person undur_gongor   schedule 07.02.2012