stdio.h报错怎么处理
c吧
全部回复
仅看楼主
level 3
黄皮老鼠 楼主
rt,附代码 输入 和 报错
自己尝试了一下发现输入和输出的%s改成%c之后可以运行,但是就不符合需求了[呵呵]
代码放评论区了,球球来个老登救一救吧[泪][泪][泪]
2024年10月15日 15点10分 1
level 3
黄皮老鼠 楼主
#include<stdio.h>
typedef struct Student {
char Name;
int Age;
double Score;
}Student;
int main()
{
int n;
Student Students[100];
scanf("%d", &n);
Student* Pstu = Students;
for (int i = 0; i < n; i++) {
char N;
int A;
double S;
scanf("%s %d %lf", &N, &A, &S);
*(Pstu + i) = { N, A, S };
}
for (int i = 0; i < n; i++) {
printf("%s %d %.2f\n", (Pstu+i)->Name,(Pstu+i)->Age,(Pstu+i)->Score);
}
return 0;
}
2024年10月15日 15点10分 2
level 3
黄皮老鼠 楼主
别赞啦,老登捞捞[泪][泪][泪]
2024年10月16日 01点10分 3
level 10
因为 Name 和 N 是 char 类型。要用 %s 把 char 改成 char 数组。
2024年10月16日 04点10分 4
char 只能存一个字节
2024年10月16日 04点10分
@VibeWorking 所以意思是Name和N存不下了是吗
2024年10月16日 08点10分
@VibeWorking 但是我输入一个单字符结果还是一样的[泪]
2024年10月16日 08点10分
是这个样子吗?
2024年10月16日 09点10分
level 10
2024年10月16日 09点10分 5
对的 谢谢佬,这样问题就解决了
2024年10月16日 11点10分
我就是没弄明白,如果我要输入一个单字符,我用%s为什么也会出现一样的报错
2024年10月16日 11点10分
char 只分配了一个字节的空间,而使用 %s ,printf会寻找 \0,这样就访问到了一块未分配(没有权限访问)的内存空间。专业点叫段错误(Segmentation fault)。
2024年10月16日 11点10分
吧务
level 10
改数据类型的时候应注意,把字符改字符串要加\0,字符串本质是字符的数组,字符在底层就是一个整数。
2024年11月25日 14点11分 8
1