我使用的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; }
我將其保存爲海峽。 c和當我編譯它,首先我得到以下警告:
[[email protected] examples]$ gcc -Wall str.c -o str
str.c: In function ‘main’:
str.c:15: warning: operation on ‘args’ may be undefined
終於運行它,給人以賽格故障如下圖所示
[[email protected] examples]$ ./str Jimmy Neutron
Jimmy Neutron
-4
Segmentation fault (core dumped)
投票「太局部化」在這根本沒有意義。這可以說是http://stackoverflow.com/questions/7877258/why-does-this-ii-3-generate-a-warning-may-be-undefined的重複,因爲真正的問題是「這個警告是什麼意思? 「但過於本土化就是不正當的:無助和缺少重點。 – Flexo 2012-03-16 10:12:32