C for回路完成后的Seg故障
正在尝试检查stdin参数是否包含非法字符(冒号、句号和逗号)。 使用strchr。如果它在args中发现一个非法字符,它就会像我预期的那样退出。如果所有输入都正常,则会抛出seg故障(检查所有参数后)。不会留下for循环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 = '.';
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;iargv
从0
变为argc-1
因此,您的循环条件:
i<=argc
iargv
从0
变为argc-1
因此,您的循环条件:
i<=argc
ifor(int i=1;i
您的迭代次数过多。而argv[0]
是正在运行的程序的路径。此外,命令行arg与stdin
无关。如果您的问题是“如何调试seg故障”,您应该告诉我们更多关于您的平台以及您喜欢使用的调试器的信息。了解代码中错误的解释对您的帮助远不如了解如何调试此类问题。对于(int i=1;i
您的迭代次数太多了。argv[0]
是正在运行的程序的路径。此外,命令行参数与stdin
无关。如果您的问题是“如何调试seg故障”,您应该告诉我们有关您的平台以及您喜欢使用的调试器的更多信息。了解代码中错误的解释对您的帮助远不如了解如何调试此类问题。