因此,我对C语言很陌生,我试图编写一个程序,输出大写或小写的文本,方法是输入-u或-l。该程序编译,但是当我运行它时,它给我一个分段错误。为什么?C在尝试运行时出现分段错误
#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]);
}
}
}
'strupr'代替'toupper'和'strlwr'代替'tolower', – BLUEPIXY
还要考虑的情况下的argc <2 –
'strupr()'/'strlwr ()'不是C也不是POSIX,可能只能作为后者的扩展,所以不是portabe。 @BLUEPIXY – alk