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