C语言中正确使用Printf和Scanf函数

作者:白雪 | 创建时间: 2023-07-18
C语言中常常会用到Printf和Scanf函数,但有时候莫名其妙程序无法运行,也找不出错误在什么地方。实际上,Printf和Scanf函数的使用有很多限制,不知不觉之间,Printf和Scanf这两个函数就出错了。我们先看看一个典型错误。...
C语言中正确使用Printf和Scanf函数

操作方法

这是中国海洋大学学生成绩信息管理系统大作业。 先设置一个结构体。 struct Student      //结构体类型格式 { int number; char name[10]; float chinese; float maths; float english; }; 在写录入信息函数的时候写了一段程序: scanf("%d%s%f%f%f",&stu[0].number,stu[0].name,stu[0].chinese,stu[0].maths,stu[0].english); 然而XCode给了一个黄色的小三角形和一段看不懂的英文

在VB中运行的效果如图:

有些同学认为在%d%s%f%f%f之间加逗号就可以解决。实际上还是无法解决,虽然在%s和%f之间加了一个逗号。后面的数据都被%s吃掉了。

解决方案如下: 如果需求必须是先输入字符串后输入数字,那么必须人工进行判断。 思路为用getchar逐个读入字符,并赋值到字符串对应位置,当出现逗号时结束。然后再用scanf读入数字。 代码如下: #include <stdio.h> int main() { char s[100]; int v; int i = 0; while(1) { s[i]  = getchar();//逐个输入字符并赋值到字符串中。 if(s[i] == ’,’)//输入结束。 { s[i] = ’\0’;//赋值结束符。 break;//退出循环。 } i ++; } scanf("%d",&v);//继续输入数字。 printf("%s\n%d\n", s, v);//输出得到的变量,每行一个值。 return 0; }

结论: 在C程中,连续输入和输出字符串和数字时,慎之又慎。一定要看输出时候,字符串会不会把后面的数字“吃”掉。 解决方法有三种: 一、逐个输入字符; 二、把字符和数字分开输入; 三、把字符放在数字的最后面输入。

点击展开全文

更多推荐