分段错误,但我找不到它

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 个字符来引用未定义的内存。