Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.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语言中的分段错误_C - Fatal编程技术网

c语言中的分段错误

c语言中的分段错误,c,C,每次我运行这个c代码时,我都会遇到一个分段错误(内核转储)…所以数组会被打印出来,所有的东西都会被打印出来,在打印结束时,它会告诉我这个分段错误…我尝试在if之后加一个中断,错误代码不会出现,但现在它只读取一行,不会读取多行 int main(int argc, char* arg[]){ if (argc != 2){ puts("Error: Usage is caesarcipher <offset>"); exit(1); }

每次我运行这个c代码时,我都会遇到一个分段错误(内核转储)…所以数组会被打印出来,所有的东西都会被打印出来,在打印结束时,它会告诉我这个分段错误…我尝试在if之后加一个中断,错误代码不会出现,但现在它只读取一行,不会读取多行

int main(int argc, char* arg[]){
    if (argc != 2){ 
        puts("Error: Usage is caesarcipher <offset>");
        exit(1);
    }
    int i = 0;
    int input;
    char array[100];
    while ((input = getchar())!= '\0'){
        if (input == '\n'){
            array[i] = '\0'; 
            printf("%s\n", array);
            i = 0;
        }else{  
            array[i] = input;
            i += 1;}}
        return 0;
    }
}
intmain(intargc,char*arg[]){
如果(argc!=2){
puts(“错误:用法不正确”);
出口(1);
}
int i=0;
int输入;
字符数组[100];
而((input=getchar())!=“\0”){
如果(输入=='\n'){
数组[i]='\0';
printf(“%s\n”,数组);
i=0;
}否则{
数组[i]=输入;
i+=1;}}
返回0;
}
}

您应该检查文档中是否有
getchar()
,特别是指示错误的返回值。

您应该检查文档中是否有
getchar()
,特别是指示错误的返回值。

因此,您没有什么可以阻止您写入数组[100]的末尾。当然,如果您输入的字符超过100个,那么分割错误不仅可能发生,而且很可能发生。对于初学者,添加检查以查看I是否大于99并中止。但是,如果您正在读取的行很短,我不知道您为什么会出错。因此,您没有什么可以阻止您写入超过数组[100]结尾的内容。当然,如果您输入的字符超过100个,那么分割错误不仅可能发生,而且很可能发生。对于初学者,添加检查以查看I是否大于99并中止。然而,如果你读的句子很短,我不知道你为什么会犯错。。“返回值:成功时获得的字符或失败时获得的EOF。”
EOF
'\0'
不同。是的,我理解了……代码工作了……非常感谢。“返回值:成功时获得的字符或失败时获得的EOF。”
EOF
'\0'
不同。是的,我理解了……代码工作了……非常感谢