相关疑难解决方法(0)

调用isalpha导致分段错误

我有以下程序导致分段错误.

#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],但似乎不是这种情况.我有代码来检查参数的数量,但为简洁起见,此处未显示.

这里发生了什么事?

c pointers segmentation-fault

10
推荐指数
2
解决办法
942
查看次数

标签 统计

c ×1

pointers ×1

segmentation-fault ×1