gpt4 book ai didi

c - C 中的结构和字符串

转载 作者:太空宇宙 更新时间:2023-11-04 03:25:28 24 4
gpt4 key购买 nike

我开始学习 C,并编写了一个实现结构的简短程序。现在,它只有一个结构和一个应该填充其中一个结构的短函数(几个存储在一个数组中)。程序获取所有值(目前仅针对一种结构以帮助我了解发生了什么)并且问题从 main 开始,在

printf("%s", tablica[0].nazwa);

因为程序停止响应(之前没有错误或警告)。

如果我输入:

printf("%d", tablica[0].x);

它将打印我输入的值 x,所以我知道 printf 中的字符串有问题(但我不明白为什么)。这可能很简单,但我只是一个初学者。

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

struct struktura
{
char *nazwa;
double x, y, z;
};

int wczytaj(struct struktura tab[])
{
int i;
for ( i = 0; i<1; i++)
{
printf("Podaj nazwe: ");
scanf("%s", &tab[i].nazwa);
printf("Podaj x: ");
scanf("%i", &tab[i].x);
printf("Podaj y: ");
scanf("%i", &tab[i].y);
printf("Podaj z: ");
scanf("%i", &tab[i].z);
};
return 0;
}

int main(struct struktura* a)
{ int i;
struct struktura tablica[6];
int wyniki[6][6];
wczytaj(tablica);
printf("%s", tablica[0].nazwa);
}

抱歉有些名字是波兰语,我可以更正,但我希望它不会模糊程序)。

最佳答案

您在 double 类型中使用了错误的格式说明符

scanf("%i", &tab[i].x);
printf("%d", tablica[0].x);

和其他人。他们应该是

scanf("%lf", &tab[i].x);
printf("%f", tablica[0].x);

也是这个字符串输入

scanf("%s", &tab[i].nazwa);

应该像这样丢掉 & 符号

scanf("%s", tab[i].nazwa);

但即便如此,nazwa 也没有分配给它内存。正如评论中所建议的那样,您可以使用像

这样的固定数组
struct struktura
{
char nazwa[30];
double x, y, z;
};

main 的签名很不正常,通常是

int main(void)

int main(int argc, char *argv[])

关于c - C 中的结构和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41512830/

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