Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C编程中检索数组值。如何修复这些错误?_C_Arrays - Fatal编程技术网

在C编程中检索数组值。如何修复这些错误?

在C编程中检索数组值。如何修复这些错误?,c,arrays,C,Arrays,这是我的第一篇文章,所以如果我没有正确地做到这一点,我很抱歉。但是,我对C编程相当陌生,我遇到了一个障碍。我们得到了一个.exe文件来从头开始构建代码。我已经走了这么远,但是我很难通过检索这些名字。它正在存储它们,或者看起来是这样,但是当我的值设置为3时,它会从前两个的所有三个名称中提取,并且只正确显示第三个名称。姓氏总是正确的。我在下面提供了一个屏幕截图,显示了我的问题。我很快就要完成了,但这一步我过不了。任何帮助都将不胜感激 #include <stdio.h> #include

这是我的第一篇文章,所以如果我没有正确地做到这一点,我很抱歉。但是,我对C编程相当陌生,我遇到了一个障碍。我们得到了一个.exe文件来从头开始构建代码。我已经走了这么远,但是我很难通过检索这些名字。它正在存储它们,或者看起来是这样,但是当我的值设置为3时,它会从前两个的所有三个名称中提取,并且只正确显示第三个名称。姓氏总是正确的。我在下面提供了一个屏幕截图,显示了我的问题。我很快就要完成了,但这一步我过不了。任何帮助都将不胜感激

#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];