编写程序exp3_1.c,从键盘读入一个字符串,去掉其中所有的空格得到一个新串后再输出(只能定义一

编写程序exp3_1.c,从键盘读入一个字符串,去掉其中所有的空格得到一个新串后再输出(只能定义一个字符数组,不可以定义两个字符数组,可以根据编程需要定义字符指针以及其他变量)

//刚写的code,测试通过,只用了一个数组,如果有疑问,欢迎交流
#include<stdio.h>
int main(){
char tar[1000];
gets(tar);
int cur_next = 0, cur_idx = 0;
while(tar[cur_idx] != '\0'){
if(tar[cur_idx] == ' '){
cur_idx++;
}else{
tar[cur_next] = tar[cur_idx];
cur_idx++;
cur_next++;
}
}
tar[cur_next] = '\0';
puts(tar);
return 0;
}

追问

有简单一点的吗?我们正在学C语言,而且刚入门。

追答

这个代码用的都是基本的语法,理解了逻辑就好了
例如:"hi nice to meet you"
1. cur_next和cur_idx刚开始都是指向 'h'
2. 由于tar[cur_idx]不是空格当前不是空格,所以,tar[cur_next] = tar[cur_idx], cur_next++, cur_idx++
3. cur_next和cur_idx都指向了'i'
4. 同样tar[cur_idx]不是空格不是空格,同2
5. 遇到空格了,cur_idx++, 此时cur_idx指向了'n', cur_next指向了' '空格
6. tar[cur_idx]不是空格,所以tar[cur_next] = tar[cur_idx]; 这样就把'n'复制给了原来空格的位置
7.
之后的过程就类似了,先理解下这个过程吧,如果还有疑问,欢迎交流

温馨提示:答案为网友推荐,仅供参考
相似回答