Я использую strcmp следующими способами
- Передача имен массивов char []
Передача указателей на строковые литералы, но второй результат приводит к ошибке seg.хотя я и подтвердил, что указатели указывают на правильные строковые литералы, я не совсем понимаю, почему я получаю ошибку сегмента .. Вот код: -
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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));// this works
printf("%d\n", strcmp(*(--args),*(++args)));//this gives me a seg fault
return 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
наконец, запустив его, выдает ошибку сегмента, как показано ниже
[Neutron@Discovery examples]$ ./str Jimmy Neutron
Jimmy Neutron
-4
Segmentation fault (core dumped)