烟大计科 问题 E: 期末-简单的字符串替换
题目描述
用C语言写一个小程序,输入两个字符串str1,str2,将str1中的每个空格符都替换为str2,并输出
输入
输入两个字符串,之间用回车隔开。
输出
替换之后的字符串。
样例输入
copy
I play to win
Happy halloween!
Made by hxl.
样例输出
IHappy halloween!playHappy halloween!toHappy halloween!win
提示
输入的字符串的长度均小于100。
#include<stdio.h>
int main()
{
char str1[100],str2[100];
int i;
gets(str1);
gets(str2);
for(i=0;str1[i];i++)
if(str1[i]==' ')//如果是空格就输出str2
printf("%s",str2);
else//不是空格就输出str1[i]所对应的这个字符
{printf("%c",str1[i]);}
return 0;
}
样例输了个出:
本题的收获:
1.思路
思考的时候光把思路局限于:把str2插入到str1里面,然后在整个地输出str1,这样占用空间啥的也要相应地扩大,看别的代码甚至有二百多行很可怕
所以在有了一个麻烦的思路以后先别急着查,再深地想想说不定能更灵活
本题思路来源于智慧的[\m0_51725392](https://blog.csdn.net/m0_51725392)同学
2.gets()函数
用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加’\0’字符。其调用格式为:gets(s); 其中s为字符串变量。
这是提示的内容,意思就是用了gets函数后,输入完一个字符串后敲一个回车就可以,不用printf的“\n”之类的,函数会把回车吃掉再加一个‘\0’表示此字符串的结束。
关于‘\0’又查了一下:
“’\0’是判定字符数组结束的标识,表示这串字符到结尾了;
注意:在字符数组中’\0’是占一个位置的!
例如 定义char c[6]=“hello”,而在内存中字符数组 c 则是"hello\0";
即’\0’在数组中占有空间却不被我们看到;
所以如果一个长度为10的字符串要放在字符数组里的话就应该把字符数组的长度定义为11”