本文目录一览:
C语言 为什么输出如此奇怪?
这是因为缓冲区的回车符导致的,每次scanf读取字符后会留下一个回车在缓冲区,while循环会把这个回车读取给grade,那么就会触发switch的default了
在switch块后面跟一句rewind(stdin);把缓冲区清空就好了
switch(gread)
{
...............;
}
rewind(stdin); //清空缓冲区
或者在输入格式附后加一个空格吸收回车符
scanf("%c ",grade) //%c后面加个空格,就可以吸收回车,空格TAB这类空白字符
C语言有什么优点什么缺点?有什么特别之处
c语言的优点就是它的性能极佳,其它编程语言几乎没有它的性能,因此它被用为linux操作系统设计语言。
c语言的缺点是太灵活,没有垃圾回收,代码不好编写。
c语言特别之处就是它的指针和结构体,这两个东西的存在让c语言变得异常强大,很多复杂的业务设计,都可以通过它们两个来实现,也可以说,只有掌握了指针和结构体,你才算入门c语言。
C语言的一些奇怪的表现,求高人指点。
先解释为什么没办法输入name。
执行这条scanf("%d",p-number);
之后通过屏幕输入的内容实际为一个整数+一个换行符,
儿scanf只读取了一个整数,而换行符依旧存在缓冲区中。
gets函数会读取字符知道遇到换行符,对于当前的情况来说,其第一个字符就是换行符,所以,它只读取一个换行符。gets函数在执行完读取操作之后,会将换行符转换为\0,这也就是我们为什么看不到内容的原因。
insert修改的方法:在scanf函数调用之后添加一个情况缓存的操作:
fflush(stdin);
这样insert就可以工作了。