关于c的2个问题

xjbx
博客专家认证
2001-07-19 05:58:30
1、#include <stdio.h>
void main()
{
char s1[5],s2[5];
scanf("%4s",s1);
scanf("%4s",s2);
}
//如果在第一个scanf输入较长的字符串,
//多余的字符串会留在缓冲区中,并自动
//赋值给s2, 怎样避免这种情况?

2我在使用C++时不同的类对象的节点用链表连起后存档,
在读档时入何知到那但是属于那个类对象的,是否可在每个
类中添加一个标志域,一起存档,读档时在辨认。
请高手给于指点。





...全文
132 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
FireBow 2001-07-20
  • 打赏
  • 举报
回复
关注
seedundersnow 2001-07-20
  • 打赏
  • 举报
回复

不要用scanf()! 我发现,这是我出错最多的一个函数,而且不容易调试,我现在遇到这样的需求宁愿自己写一个函数....是不是我太笨?

xjbx 2001-07-20
  • 打赏
  • 举报
回复
对于第一个问题:我照你说的在两个scanf()中间加了一句printf("%s",s1);但输入较长的字符串时,输出只显示了前4个字符,s2好像还是自动被赋值了...如果在scanf("%4s",s2);后再加上printf("%s",s2);一句,从运行结果可以看出s2的确被自动赋值了!
如果在第一个scanf输入较长的字符串, 多余的字符串会留在缓冲区中,并自动 赋值给s2, 怎样避免这种情况?应如何解决呢?
phoenix96_2000 2001-07-19
  • 打赏
  • 举报
回复
char * garbage;

在两个scanf之间加入
scanf("%s",garbage);
washliu 2001-07-19
  • 打赏
  • 举报
回复
你在两个scanf()语句之间加一个输出语句就可以了。


当你存档时加一个标记就可以了呀,不用在类中加,这样会耗资源的!
dsli 2001-07-19
  • 打赏
  • 举报
回复
是不是可以在第一个scanf()后清一下缓冲区
自己编个函数清还冲区
xjbx 2001-07-19
  • 打赏
  • 举报
回复
没人帮我么?
一、C语言自我YY1)、C语言是许多高级计算机语言的基础,学好C语言能更好的学习其他高级语言,为以后的学习打基础;往深学C语言的话那就是学到C在Linux里的应用,Linux十分强大。2)、C语言是一种计算机程序设计语言。具有高级语言的特点,又具有汇编语言的特点。C语言可作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。3)、应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。4)、C语言是面向过程语言,C语言通过windows/linux平台下编译的,是直接运行在windows/linux平台下的,而XX始终是运行在他的虚拟机之上的;所以理论上C语言能做一些相对于比较底层的工作,像XX就不能编写Windows病毒。5)、如果要利用编程来做一些windows优化工作的话,建议还是利用C语言。C语言是目前世界上流行、使用最广泛的高级程序设计语言6、很多编译器,几乎所有操作系统Windows,Linux,Unix的大部分代码都是C,C在背后做了很多东西的,也许开发游戏用C++,安卓用XX更为合适,图形界面的用其他语言开发效率更高一些(因为他们封装了很多东西),但同样的原因导致略微接近底层的功能其他语言根本干不了!Windows的API都是按照C语言的格式给的,这也很能说明问题!嵌入式开发更是离不了C语言!纵观电脑发展几十年,C语无所不能呀!
1) 本套课程针对高校大学生系统学习C语言而录制,从0基础入门讲起,循序渐进,通俗易懂,同时适用于计算机系及非计算机系的同学。通过学习可以帮助大家掌握C语言本质,轻松面对C语言全国二级考试,并达到能独立完成中型C项目、C游戏的水平;2) 多数高校都开设了C语言课程,网上C语言课程也很多,但普遍存在两个问题: (1) 授课方式单一,大多是照着代码念一遍, 对刚刚接触编程的同学来说,感觉晦涩难懂 (2) 授课内容过度注重语法,没有项目实战支撑,造成课程枯燥无趣。本课程针对上述问题进行了改进 (1) 授课方式采用语法讲解+内存布局示意图+项目的方式,让课程生动有趣好理解 (2) 系统全面的讲解了C语言的核心技术点,还配套录制了《全国计算机二级C语言真题精讲》,让学员在掌握C语言编程的同时,还能轻松面对二级考试;3) 课程详细内容: 常量-变量、分支语句、循环语句、操作符和表达式、函数(库函数、自定义函数、递归调用 )、数组(一维数 组、二维数组、数组作为函数参数、指针数组)、指针(指针和指针类型、二级指针和多级指针、指针表达式解析、指针运算、数 组指针、函数指针、回调函数)、调试技巧、程序环境和预处理(翻译环境、运行环境、预定义符号、#define和#undef、宏和函 数、条件编译、文件包含)、 数据在内存中的存储、内存块分配、static、字符函数和字符串函数、自定义类型(结构体、枚举 、联合)、动态内存管理、文件操作(i/o常量、i/o函数、流)。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧