我开始学习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[])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句