所以我是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]);
}
}
}
答案 0 :(得分:2)
toupper
&amp; tolower
获取一个表示字符的int,并返回一个表示该字符的int(分别为大写或小写)。
你做错了两件事:
printf
并使用&#34;%s&#34;)因此,您从该功能中获取了一些垃圾,然后将printf
发送到未映射的内存地址 - &gt;那是你的错误。
答案 1 :(得分:0)
为了简化生活,还可以考虑使用getopt命令。
您将在此处找到一个示例:http://www.gnu.org/software/libc/manual/html_node/Example-of-Getopt.html#Example-of-Getopt