目录
一脸懵的报错
在前几天刷题的时候,遇到了录入字符串,兴冲冲的一顿写,主函数如下:
int main()
{
char arr[10000];
scanf("%s",arr);
int str = strlen(arr)-1;
reverse_str(arr,str);
printf("%s\n", arr);
return 0;
}
运行结果如下:
为什么会这样???我不是输入了一堆吗?为什么只输出了一个?
臭虫在哪儿?
让我们来看看到底是什么问题
我们发现只录入了一个值,后面的都没录入进去。
字符串录入
这和scanf的录入有关系
scanf是C语言的标准输入流,可以录入数字、字符、字符串,遇到空格或者回车就停止录入
那么传统的方式录入不了怎么办呢?两种方法
1.新知识
int main()
{
char arr[50];
scanf("%[^\n]", arr);
printf("%s", arr);
}
scanf("%[^\n]",arr),这句代码的意思就是遇到\n(回车)停止录入,[]内的内容可以更改
例如:[^s],意思就是遇到s就停止录入
[^abc],意思就是遇到abc中的任意一个字符,就停止录入
2.get() 函数录入
int main()
{
char arr[50];
gets(arr);
printf("%s", arr);
}
gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。
结语
写代码遇到报错不要慌,我们慢慢找bug,每次找bug其实都是梳理思路,提升自我的时候(你已经是一个成年人了,自己的bug自己改,嘿嘿),下篇文章将会为大家讲解,如何找bug,大家拭目以待吧~
本题链接如下,有兴趣的同学可以去做一下,题目不难哦。