使用strcmp的段错误
|
我通过以下方式使用strcmp
传递char []数组名称
将指针传递给字符串文字
但是,第二个结果是段错误。即使我已经确认指针指向正确的字符串文字,但我仍然困惑为什么会出现段错误。
这是代码:-
#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)
没有找到相关结果
已邀请:
2 个回复
抹持奠糙驰
和
。 代替ѭ5 做
仍然不是很可读(最好使用索引并对照ѭ7进行有效性检查),但是至少您不要更改该值并在同一序列点对其进行多次评估。
陷牡彭拈峰