我在网站上尝试了所有解决方案,并没有设法解决这个问题 我在标题中有一个声明的结构
struct _fileNew;
typedef struct _fileNew fileNew;
在我的源文件中我定义了fileNew
struct _fileNew
{
char chars[];
};
现在在我的主要内容我尝试在结构中打印一些东西
fileNew* blu;
int i;
for ( i = 0; i < 10; i++)
{
blu->chars[i] = 'b';
}
printf("%s", blu->chars);
我得到了
错误:取消引用指向不完整类型的指针 我运行了一个调试,我看到cahrs正确填充但它不会打印它。在定义fileNew时我在源文件中做错了什么。?
谢谢!
答案 0 :(得分:0)
您需要为堆中的结构分配一个内存块,并将其地址分配给您的指针 在C中,每个字符串以'\ 0'(字符串终止符)结尾,因此您还需要添加它。
#include <stdio.h>
#include <stdlib.h>
#define MAX_FILE_SIZE 128
struct _fileNew;
typedef struct _fileNew fileNew;
struct _fileNew
{
char chars[MAX_FILE_SIZE];
};
int main()
{
fileNew *blu = malloc(sizeof *blu);
int i;
for (i = 0; i < 10; i++)
{
blu->chars[i] = 'b';
}
blu->chars[i] = '\0';
printf("%s", blu->chars);
return 0;
}
答案 1 :(得分:-1)
您只有一个实际上没有指向任何东西的指针,需要为char []分配大小。在main中,你需要指定指向声明的结构的指针或使用malloc作为其他答案建议:
static fileNew blu;
fileNew *p_blu = &blu;
...
p_blu->chars[i] = 'b';