我正在编写的这个程序有一个小问题,我试图使用指针将数据输入到结构中,但编译器只是给我一个错误,指出:“取消引用指向不完整类型的指针”
程序的功能很简单: 使用函数将数据输入到使用指针的结构中的程序
代码如下: main 函数只是调用输入函数并将结构体指针作为参数传递
void input(struct test *ptr)
{
printf("Enter: \n");
fflush(stdin);
scanf("%s",&ptr->entry);
}
void print(struct test *ptr)
{
}
int main()
{
int counter;
struct test
{
char entry[20];
}p[4];
struct test *ptr=p;
ptr=&p;
for(counter=0;counter<=4;counter++)
{
input(ptr);
ptr++;
}
return 1;
}
打印功能仍然为空。
最佳答案
第一个问题是 struct test
仅在“main”函数中定义,并且无法被 input
或 print
访问。在所有函数之外定义它。
然后你想扫描一个字符串,而不是一个字符,所以你需要"%s"
。实际上是“%19s”,所以如果输入太长,您不会离开条目数组的末尾(向@BLUEPIXY致敬)
并且 ptr->entry
是要放置字符串的地址,因此不需要 &ptr->entry
而是 ptr->条目
您在 main
中分配给 ptr
两次。第二个是错误的(同样,p
是结构数组的地址,所以你在初始化时它是正确的。&p
的赋值是错误的。
最后,您的 for 循环执行 5 次 (0,1,2,3,4),最后一次迭代访问 4 元素 p
数组末尾的一个
总而言之:
#include <stdio.h>
struct test
{
char entry[20];
};
void input(struct test *ptr)
{
printf("Enter: \n");
fflush(stdin);
scanf("%19s", ptr->entry);
}
void print(struct test *ptr)
{
}
int main()
{
int counter;
struct test p[4];
struct test *ptr=p;
for(counter=0;counter<4;counter++)
{
input(ptr);
ptr++;
}
return 1;
}
关于c - 如何使用指针将值输入到结构中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26955414/