开端
刷算法题,原来以为迭代是难点,花了大半天弄懂迭代和题目的思路之后没想到被c语言带空格的字符串输入困了两天。。。
其实这个问题解决起来并不麻烦,但为什么头一天晚上花了那么多时间都没有解决呢?主要是因为太情绪化了,并没有做好在理清思路之后仍然会遇到问题的心理准备,所以在塌下心来看了半天算法思路之后,却仍不能通过代码之后会有点崩溃,破罐子破摔。。。
来龙去脉
- 刷算法题 ,下了好大决心才开始,耐着性子看懂了题目,看懂了解题方式;
2.想要试试代码的时候,却发现,通不过!!!; - 写恼了,当时的其实是明白问题出在哪的,但是好像是有种报复的感觉,就不会好好解决问题;
- 第二天心情平复了(其实还是有点痛苦)开始一点点试网上说的方法将解决问题
正文来啦-在c语言中如何输入有空格的字符串
1、scanf?
例如scanf("%d%d",&a,&b)两个变量在输入的时候一般会用空格或者回车隔开 由此可得scanf是不接受空格和回车的
2、gets?
在采用gets函数的时候由于安全问题在VS中需要变为函数ges_s才可以使用
```c
char s[6][6];
int n=3;
for (i = 0; i < n; i++) {
gets_s(s[i]);}
在vs中可以用此方法成功输入 但是OJ上通过不了,所以就又试其他方法
```c
for (i = 0; i < n; i++) {
j = 0;
while (scanf("%c", &s[i][j]), s[i][j] != '\n')j++;
s[i][j] = '\0';
}
这种方法就可以在OJ上面通过啦
需要解释一下的是
在scanf中%c和%s的区别:前者是对于一个char型的数组可以一个一个字符的输入程序输入结束时的回车并不会直接转化为‘\0’需要自己加,后者是可以一个字符串直接输入,会把最后的回车直接变成’\0’保存。后者会吃掉空格 所以用前者
戒掉情绪
所谓戒掉情绪并不是,可以控制住不随意表现自己的情绪,而是从一开始就不要随随便便产生情绪。