【发布时间】:2011-09-12 05:09:19
【问题描述】:
我通过以下方式使用 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)
【问题讨论】:
-
对此投票“过于本地化”毫无意义。它可以说是stackoverflow.com/questions/7877258/… 的副本,因为真正的问题是“这个警告是什么意思?”但过于本地化只是反常:无益且没有抓住重点。
标签: c evaluation strcmp args sequence-points