我写一个简单的函数, 使 > C
字符串 (NOT C+++) 成为 Linux 函数 execvp
的矢量。
这是我的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char** vecting(char *cstring) {
int w_count = 0; //word count
char *flag = cstring;
while (*flag != ) {
if (*flag == || *flag ==
|| *flag == )
*flag = ;
flag++;
else {
w_count++;
while (*flag != && *flag !=
&& *flag != && *flag != )
flag++;
}
}
char **cvector = (char **)malloc(sizeof(char *)*(w_count+1));
cvector[w_count] = NULL;
int v_count; //vector count
for (v_count = 0, flag = cstring; v_count < w_count; v_count++) {
while (*flag == )
flag++;
cvector[v_count] = flag;
while (*flag != )
flag++;
}
return cvector;
}
int main()
{
char *p = "This is a BUG";
char **argv = vecting(p);
char **temp;
for (temp = argv; *temp != NULL; temp++)
printf("%s
", *temp);
return 0;
}
当我运行它时,它会得到 < code> 分层错误 。
然后我调试它,我刚发现,一跑
程序收到SIGSEGV信号,分解故障
在那个时间
我无法理解为什么程序在程序更改 cstring
时会收到 SIGSEGV 信号