【发布时间】:2021-12-26 20:03:53
【问题描述】:
我想尝试函数 malloc 和指向结构的指针,但是当我编译和运行程序时,它只打印第一个和第二个输入,但第三个输入没有被打印,我认为它是缓冲区溢出或其他什么,我不能找到有问题的地方
#include <malloc.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define max 30
char *NL(char *string);
int main()
{
struct menschen
{
char name_usa[max];
int anzahl;
char Anfuerer[max];
};
int f = 0;
char *input;
input = malloc(max);
struct menschen *mensch;
mensch = malloc(sizeof(struct menschen));
printf("Bitte eingeben wer der Praesident der USA ist: ");
fgets(input, max, stdin);
NL(input);
strcpy(mensch->name_usa, input);
printf("Bitte eingeben, wie viele menschen auf der welt leben: ");
scanf("%i", &f);
mensch->anzahl = f;
printf("Bitte eingeben wer der typen ist: ");
fgets(input, max, stdin);
NL(input);
strcpy(mensch->Anfuerer, input);
printf("Der Name des Praesidenten der USA ist %s. Die Anzahl der Menschen die Auf der erde leben, ist %i. Der Name des typen ist %s.", mensch->name_usa, mensch->anzahl, mensch->Anfuerer);
free(mensch);
free(input);
return 0;
}
char *NL(char *string)
{
char *string2 = string;
while(*string2)
{
if(*string2 == '\n')
*string2 = '\0';
string2++;
}
return string;
}
输入是 Bitte eingeben wer der Praesident der USA ist: 拜登 Bitte eingeben, wie viele Menschen auf der welt leben: 710 Bitte eingeben wer der Typ ist: Justus(我不能输入,输入在第二个结束)
期望的输出是: Der Name des Praesidenten der USA ist Biden。 Die Anzahl der Menschen die Auf der erde leben, ist 710. Der Name des typen ist。
但我想要的输出是: Der Name des Praesidenten der USA ist Biden。 Die Anzahl der Menschen die Auf der erde leben, ist 710. Der Name des types ist Justus
【问题讨论】:
-
请给出准确的输入、预期结果和实际结果。