Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C for回路完成后的Seg故障_C - Fatal编程技术网

C for回路完成后的Seg故障

C for回路完成后的Seg故障,c,C,正在尝试检查stdin参数是否包含非法字符(冒号、句号和逗号)。 使用strchr。如果它在args中发现一个非法字符,它就会像我预期的那样退出。如果所有输入都正常,则会抛出seg故障(检查所有参数后)。不会留下for循环 int main(int argc, char** argv) { for(int i=0; i<=argc; i++) { const char colon = ':'; const char stop = '.';

正在尝试检查stdin参数是否包含非法字符(冒号、句号和逗号)。 使用strchr。如果它在args中发现一个非法字符,它就会像我预期的那样退出。如果所有输入都正常,则会抛出seg故障(检查所有参数后)。不会留下for循环

int main(int argc, char** argv) {
    for(int i=0; i<=argc; i++) {
        const char colon = ':';
        const char stop = '.';
        const char comma = ',';
        char *a, *b, *c;
        a = strchr(argv[i], colon);
        b = strchr(argv[i], stop);
        c = strchr(argv[i], comma);

        if (a != NULL || b != NULL || c != NULL) {
            printf("found invalid char\n");
            return 1;
        }
    }
    return 0;
}
int main(int argc,char**argv){

for(inti=0;i
argv
0
变为
argc-1

因此,您的循环条件:

i<=argc

i
argv
0
变为
argc-1

因此,您的循环条件:

i<=argc
i
for(int i=1;i
您的迭代次数过多。而
argv[0]
是正在运行的程序的路径。此外,命令行arg与
stdin
无关。如果您的问题是“如何调试seg故障”,您应该告诉我们更多关于您的平台以及您喜欢使用的调试器的信息。了解代码中错误的解释对您的帮助远不如了解如何调试此类问题。
对于(int i=1;i
您的迭代次数太多了。
argv[0]
是正在运行的程序的路径。此外,命令行参数与
stdin
无关。如果您的问题是“如何调试seg故障”,您应该告诉我们有关您的平台以及您喜欢使用的调试器的更多信息。了解代码中错误的解释对您的帮助远不如了解如何调试此类问题。