Segfault with strcmp

Я использую strcmp следующими способами

  1. Передача имен массивов char []
  2. Передача указателей на строковые литералы но второй результат - ошибка сегмента. хотя я подтвердил, что указатели указывают на правильные строковые литералы, я не понимаю, почему у меня возникает ошибка сегмента. Вот код: -

     #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)
10
задан Mechanical snail 22 December 2012 в 20:40
поделиться