【发布时间】:2021-12-06 12:25:54
【问题描述】:
由于某些奇怪的原因,当我在标记部分输入值时,打印的值都是 0,请帮忙,我尝试运行较小版本的代码,但它工作了,我不知道为什么这没有。 这是代码: 堆栈溢出一直给我一个错误,因为显然我的大部分问题都是代码,所以请忽略这个
#include <stdio.h>
#include <stdlib.h>
int main()
{
int marksComm;
char gradeComm[1];
int marksEco;
char gradeEco[1];
int marksCompsys;
char gradeCompsys[1];
int marksProg;
char gradeProg[1];
int marksDis;
char gradeDis[1];
int marksLab;
char gradeLab[1];
int marksPhy;
char gradePhy[1];
printf("CCS001\nMarks> ");
scanf("%d", &marksComm);
printf("Grade> ");
scanf("%s", &gradeComm);
printf("\nCCS009\nMarks> ");
scanf("%d", &marksEco);
printf("Grade> ");
scanf("%s", &gradeEco);
printf("\nCSC111\nMarks> ");
scanf("%d", &marksCompsys);
printf("Grade> ");
scanf("%s", &gradeCompsys);
printf("\nCSC112\nMarks> ");
scanf("%d", &marksProg);
printf("Grade> ");
scanf("%s", &gradeProg);
printf("\nCSC113\nMarks> ");
scanf("%d", &marksDis);
printf("Grade> ");
scanf("%s", &gradeDis);
printf("\nCSC126\nMarks> ");
scanf("%d", &marksPhy);
printf("Grade> ");
scanf("%s", &gradePhy);
printf("\nCSC115\nMarks> ");
scanf("%d", &marksLab);
printf("Grade> ");
scanf("%s", &gradeLab);
printf("\nCourse Code Marks Grade\n");
printf("CCS001 %d %s \n", marksComm, gradeComm);
printf("CCS009 %d %s \n", marksEco, gradeEco);
printf("CSC111 %d %s \n", marksCompsys, gradeCompsys);
printf("CSC112 %d %s \n", marksProg, gradeProg);
printf("CSC113 %d %s \n", marksDis, gradeDis);
printf("CSC115 %d %s \n", marksLab, gradeLab);
printf("CSC126 %d %s \n", marksPhy, gradePhy);
}
【问题讨论】:
-
你的字符串缓冲区太小了。
-
char gradeComm[1];也许您想使用char gradeComm;并更新您的 scanf 而不是 1 字符数组,没有空格用于空终止符。还是您希望输入一串字符? -
所有
[1]数组都不够大。您需要输入字符串和终止空字符的空间。[1]只为空值提供空间,而不是输入空间。 -
如果您从
char XXX[1]更改为char XXX,请将scanf()格式更改为" %c"-- 不要忘记它前面的空格。 -
你的输入是什么样的? “分数”百分比和“等级”是字母等级吗?字母等级可以包括“+”或“-”吗?我们需要此类信息来帮助您。