在C编程中检索数组值。如何修复这些错误?
这是我的第一篇文章,所以如果我没有正确地做到这一点,我很抱歉。但是,我对C编程相当陌生,我遇到了一个障碍。我们得到了一个.exe文件来从头开始构建代码。我已经走了这么远,但是我很难通过检索这些名字。它正在存储它们,或者看起来是这样,但是当我的值设置为3时,它会从前两个的所有三个名称中提取,并且只正确显示第三个名称。姓氏总是正确的。我在下面提供了一个屏幕截图,显示了我的问题。我很快就要完成了,但这一步我过不了。任何帮助都将不胜感激在C编程中检索数组值。如何修复这些错误?,c,arrays,C,Arrays,这是我的第一篇文章,所以如果我没有正确地做到这一点,我很抱歉。但是,我对C编程相当陌生,我遇到了一个障碍。我们得到了一个.exe文件来从头开始构建代码。我已经走了这么远,但是我很难通过检索这些名字。它正在存储它们,或者看起来是这样,但是当我的值设置为3时,它会从前两个的所有三个名称中提取,并且只正确显示第三个名称。姓氏总是正确的。我在下面提供了一个屏幕截图,显示了我的问题。我很快就要完成了,但这一步我过不了。任何帮助都将不胜感激 #include <stdio.h> #include
#include <stdio.h>
#include <string.h>
int a_delete;
char b[100];
int name;
int counter=0;
int F;
int d;
int grade;
int set;
int w;
int x;
int z;
char a[100];
char names[100];
char g[100];
char h[100];
char i[100];
char c[100];
char f[100];
char phy[100];
char Counter[100];
char final_grade[100];
double class_grades[100];
double total;
double totals;
int main()
{
printf("\n Welcome to the grade calculator");
printf("\n Enter the total number of students in the class:");
fgets(a, sizeof(a), stdin);
sscanf(a, "%d", &name);
char my_data[name*3];
char my_array[name];
if(name<1)
{
printf("\n Not a valid number");
printf("\n Please enter a valid integer number only");
}
else
{
for(x=0;x<name;++x)
{
printf("\n Please enter the students name:");
fgets(f, sizeof(f), stdin);
sscanf(f, "%s", &my_array[x]);
}
if(x<=name)
{
for(x=0 ; x<name;++x)
{
printf("\n Please enter %s's Physics score (out of 100 points) : ", &my_array[x]);
fgets(b, sizeof(b), stdin);
sscanf(b, "%d", &my_data[set]);
}
for(x=0;x<name;++x)
{
printf("\n Please enter %s's Chemestry score (out of 100 points) : ", &my_array[x]);
fgets(c, sizeof(c), stdin);
sscanf(c, "%d", &my_data[set]);
}
for(x=0; x<name;++x)
{
printf("\n Please enter %s's Math score (out of 100 points) : ", &my_array[x]);
fgets(g, sizeof(g), stdin);
sscanf(g, "%c", &my_data[set]);
}
if(x=3)
{
for(x=0; x<=name;++x)
{
puts("\n*****************");
puts("\n***Report card***");
puts("\n*****************");
printf("Name of the student: %c", my_array[name]);
printf("\nPhysics: %.2f/100", my_data[set]);
printf("\nChemistry: %.2f/100", my_data[set] );
printf("\nMath: %.2f/100", my_data[set] );
if(grade>=270)
{
printf("\nYour letter grade: A");
}
else if(my_data[set]<270>=240)
{
printf("\nYour letter grade: B");
}
else if(my_data[set]<240>=210)
{
printf("\nYour letter grade: C");
}
else if(my_data[set]<210>=180)
{
printf("\nYour letter grade: D");
}
else if(my_data[set]<180)
{
printf("\nYour letter grade: F");
}
}
}
} }
return(0);
#包括
#包括
INTA_删除;
charb[100];
int名称;
int计数器=0;
int F;
int d;
国际等级;
整数集;
int w;
int x;
intz;
chara[100];
字符名称[100];
charg[100];
charh[100];
chari[100];
charc[100];
charf[100];
char-phy[100];
字符计数器[100];
炭最终_级[100];
双级大学等级[100];
双倍总数;
双倍总数;
int main()
{
printf(“\n欢迎使用成绩计算器”);
printf(“\n输入班级学生总数:”);
fgets(a,sizeof(a),stdin);
sscanf(a、“%d”和名称);
char my_data[名称*3];
char my_数组[名称];
如果(name您将名称存储在同一个变量中,每次输入时都会覆盖最后一个变量。您似乎对字符数组有误解,我将分解问题代码
for(x=0;x<name;++x)
{
printf("\n Please enter the students name:");
fgets(f, sizeof(f), stdin);
sscanf(f, "%s", &my_array[x]);
}
希望这个答案为您澄清了一些问题。我建议您对c语言中的基本数据类型和数组进行一些研究。解决您问题的另一个可能的方法是实现一个2D数组。char my_array[name];
您正在尝试将所有名称存储在同一个数组中(以不同的偏移量)。这显然不起作用,因为每个sscanf
都将覆盖先前名称的一部分(这正是您观察到的)。一种方法是使用2D数组:char my_array[name][MAX_name\LEN]
这肯定有助于清除很多错误,我现在有了它,在那里我得到了第一个名字,最后,现在它每次只去掉一个字母。我是创建一个新数组来调用下一个名字,按照同样的编码方式,还是我只是更改了变量?
for(x=0;x<name;++x)
{
printf("\n Please enter the students name:");
fgets(f, sizeof(f), stdin);
sscanf(f, "%s", &my_array[x*100]);
}
char my_array[100*name];