[英]Segmentation fault in C when trying to run
因此,我是C语言的新手,我试图编写一个通过输入-u或-l输出大写或小写文本的程序。 该程序可以编译,但是当我运行它时,它给我一个分段错误。 为什么?
#include <stdio.h>
#include <string.h>
int main(int argc, char*argv[]){
int i;
int j;
int k;
if(strcmp(argv[1],"-u")){
for(i=0;i<argc;i++){
printf("%s ",toupper(argv[i]));
}
}
else if(strcmp(argv[1],"-l")){
for(j=0;j<argc;j++){
printf("%s ",tolower(argv[j]));
}
}
else{
for(k=0;k<argc;k++){
printf("%s ",argv[k]);
}
}
}
toupper
和tolower
接受一个表示字符的整数,并分别返回表示该字符的大写或小写形式的整数。
您做错了两件事:
printf
) 因此,您会从该函数中获取一些垃圾,然后将printf
发送到未映射的内存地址->这就是您的段错误。
为了使生活更轻松,还可以考虑使用getopt命令。
在这里,您将找到一个示例: http : //www.gnu.org/software/libc/manual/html_node/Example-of-Getopt.html#Example-of-Getopt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.