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

2026-04-01 10:29:03

1、这是中国海洋大学学生成绩信息管理系统大作业。

先设置一个结构体。

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给了一个黄色的小三角形和一段看不懂的英文

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

2、在VB中运行的效果如图:

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

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

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

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

4、解决方案如下:

如果需求必须是先输入字符串后输入数字,那么必须人工进行判断。

思路为用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;

}

5、结论:

在C程中,连续输入和输出字符串和数字时,慎之又慎。一定要看输出时候,字符串会不会把后面的数字“吃”掉。

解决方法有匠包三种:

一、逐个输入字符;

二、把字符和数字分开输入;

三、把字符放在数字的最后面输入。

猜你喜欢