gpt4 book ai didi

c - 我似乎无法从结构中打印出字符串,但我可以打印整数

转载 作者:行者123 更新时间:2023-12-01 16:20:02 24 4
gpt4 key购买 nike

我的代码应该获取学生的姓名和学生的成绩。之后,我尝试从我制作的结构中打印学生姓名,但只能打印成绩。尝试使用打印字符串时出现错误

printf("%s", test[0].names);

错误提示,

Unhandled exception at 0x0fe113af (msvcr100d.dll) in StudentNamesAndGrades.exe: 0xC0000005: Access violation reading location 0x65736f4a.

但是当我使用时

printf("%d", test[0].studentScores);

它打印出第一个学生的分数。这是完整的代码,因为它可能与我尝试打印的方式不同。

#include <stdio.h>
#include <string>

/*
this program will get a name of students
and then you will enter the grade for each one :)
*/

struct students
{
char *names;
int studentScores;
};


int main(void)
{
int numStudents = 0;
students *test;
int i;

printf("Enter the number of students in your class: ");
scanf("%d", &numStudents);

test = (students*)malloc(numStudents * sizeof(students));

printf("Enter the names of the %d students\n", numStudents);

for (i = 0; i < numStudents; i++)
{
printf("Enter the name of student %d: ", i + 1);
scanf("%s", &test[i].names);
printf("Enter the students score: ");
scanf("%d", &test[i].studentScores);
}

printf("%d", test[0].studentScores);
printf("%s", test[0].names); // This is where I get a problem :/

return 0;
}

最佳答案

在获取输入时,您根本没有为 char *names; 分配内存。

你的结构可能是这样的:

typedef struct students
{
char names[30];
int studentScores;
}students;

此外,使用 fgets 比使用 scanf 更安全。

关于c - 我似乎无法从结构中打印出字符串,但我可以打印整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28101854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com