Я использую strcmp следующими способами
Передача указателей на строковые литералы но второй результат - ошибка сегмента. хотя я подтвердил, что указатели указывают на правильные строковые литералы, я не понимаю, почему у меня возникает ошибка сегмента. Вот код: -
#include
#include
#include
int main (int argc, char const * args [])
{
char firstName [strlen (* ++ args)];
strcpy (firstName, * args);
char lastName [strlen (* ++ args)];
strcpy (lastName, * args);
printf ("% s \ t% s \ n", firstName, lastName);
printf ("% d \ n", strcmp (firstName, lastName)); // это работает
printf ("% d \ n", strcmp (* (- args), * (++ args))); // это дает мне ошибку сегмента
вернуть EXIT_SUCCESS;
}
Я сохраняю его как str.c, и когда я его компилирую, сначала получаю следующее предупреждение:
[Neutron@Discovery examples]$ gcc -Wall str.c -o str
str.c: In function ‘main’:
str.c:15: warning: operation on ‘args’ may be undefined
, наконец, запустил его, выдает ошибку seg, как показано ниже
[Neutron@Discovery examples]$ ./str Jimmy Neutron
Jimmy Neutron
-4
Segmentation fault (core dumped)