命令行参数程序,帮忙看一下第三种情况哪里有错误?
这个程序运行后的情况应该是:argv[1]是"+2"时,输出字符串的前两个字符
argv[1]是"-3"时,输出字符串的后三个字符
其他情况默认输出字符串的后10个字符
问题:前两种情况都能正确输出,为什么第三种情况不行?
代码和运行结果如下
#include<stdlib.h>
#include<stdio.h>
#define N 20
int main(int argc,char *argv[]){
char s[N];
int i=0,j,n;
printf("Entrez une chaine de caracteres : "); /* 输入一个字符串 */
scanf("%c",&s[i]);
while(s[i]!='\n') scanf("%c",&s[++i]);
n=*(argv[1]+1)-'0';
if(argv[1][0]=='+'){
for(j=0;j<n;j++) printf("%c",s[j]);
}
else if(argv[1][0]=='-'){
for(j=i-n;j<i;j++) printf("%c",s[j]);
}
else{
for(j=i-10;j<i;j++) printf("%c",s[j]);
}
printf("\n");
return EXIT_SUCCESS;
}
运行结果:
linux@ubuntu:~$ ./exercice +2
Entrez une chaine de caracteres : exercice
ex
linux@ubuntu:~$ ./exercice -3
Entrez une chaine de caracteres : exercice
ice
linux@ubuntu:~$ ./exercice
Entrez une chaine de caracteres : exerciceaaaa
Segmentation fault (core dumped)