分段错误,但我找不到它
Segmentation Fault but I can't find it
这是一个程序,它接受用户传递的参数,检查它是否是一个字母,并将它们连接成一个数组:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char **argv)
{
char frase[80] = "";
for(int i = 1; i < argc; i++) {
printf("%s", argv[i]);
if(isalpha(argv[i]))
strcat(frase, argv[i]);
}
printf("%s\n", frase);
}
我已经使用了 gdb
(也使用了核心选项)并且没有错误,但我得到了 Segmentation Fault (core dumped)
。如果我删除 if(isalpha(argv[i]))
,代码就可以工作。任何帮助将不胜感激,谢谢。
isalpha 的参数是一个字符,而不是指向一串字符的指针。向它传递一个指针可能会导致它通过索引出它使用的 table 个字符来引用未定义的内存。
这是一个程序,它接受用户传递的参数,检查它是否是一个字母,并将它们连接成一个数组:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char **argv)
{
char frase[80] = "";
for(int i = 1; i < argc; i++) {
printf("%s", argv[i]);
if(isalpha(argv[i]))
strcat(frase, argv[i]);
}
printf("%s\n", frase);
}
我已经使用了 gdb
(也使用了核心选项)并且没有错误,但我得到了 Segmentation Fault (core dumped)
。如果我删除 if(isalpha(argv[i]))
,代码就可以工作。任何帮助将不胜感激,谢谢。
isalpha 的参数是一个字符,而不是指向一串字符的指针。向它传递一个指针可能会导致它通过索引出它使用的 table 个字符来引用未定义的内存。