我有以下程序导致分段错误.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
printf("TEST");
for (int k=0; k<(strlen(argv[1])); k++)
{
if (!isalpha(argv[1])) {
printf("Enter only alphabets!");
return 1;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我已经发现正是这条线导致了这个问题
if (!isalpha(argv[1])) {
Run Code Online (Sandbox Code Playgroud)
并替换argv[1]为argv[1][k]解决问题.
但是,我觉得很奇怪程序会导致分段错误而不打印TEST.我还希望isalpha函数错误地检查char*指针的低字节是否argv[1],但似乎不是这种情况.我有代码来检查参数的数量,但为简洁起见,此处未显示.
这里发生了什么事?