c语言程序设计第3章,练习3-3,注意j++,开始把j++,放在for循环里面,结果在z那加了两次,得不到想要的结果
#include <stdio.h>
#include <string.h>
void reverse (char s[]);
void expand(char s1[],char s2[]);
void main(){
char s[] = "hello world";
printf("%s\n",s);
reverse(s);
printf("%s\n",s);
char ss[] = "hea-b-c a-z0-9 bc-a-z-";
char cc[200];
expand(ss,cc);
printf("%s\n",ss);
printf("%s\n",cc);
}
void reverse (char s[]){
int len = strlen(s);
int i;
int j = len -1;
char tmp;
for(i=0; j>i;i++,j--){
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
}
//练习3-3
void expand(char s[], char c[]){
int i;
int j = 0;
int m;
int len = strlen(s);
//for(i=0;i<len;i++,j++){
for(i=0;i<len;i++){
if(s[i] != '-'){
c[j] = s[i];
j++;
} else if(i+1<len && s[i-1]+1 < s[i+1]){
for(m = s[i-1]+1;m<s[i+1]; m++){
c[j] = m;
j++;
}
} else {
c[j] = s[i];
j++;
}
}
c[j] = '\0';
}