【发布时间】:2019-01-26 13:08:06
【问题描述】:
我有一个给定的结构。我读取了 txt 文件的所有字符并将其保存到我在结构中定义的多维数组(行)中。然后我想将结构变量交给一个函数,然后将所有字符打印到另一个 txt 文件。
这就是我所拥有的:
typedef struct _content {
int length;
char **lines; // multidimensional array
} content_t;
int curline = 0; //global variables
int curchar = 0;
...
struct _content inhalt;
c = fgetc(ptr);
...
void write_content(char *filename, content_t *content)
{
FILE *pFile;
pFile = fopen(filename, "a");
printf("\nWriting Char Nr. %d in line: %d", curchar, curline);
fputc(content->lines[curline][curchar], pFile);
printf("\nJust wrote char Nr. %d in line: %d !", curchar, curline);
}
...
while(c != EOF)
{
inhalt.lines[curline][curchar] = c;
//where I call the function write_content:
write_content("write-file.txt", &inhalt);
if(c == '\n')
{
inhalt.length++;
curline++;
inhalt.lines[curline] = malloc(255);
curchar = 0;
}
else
{
curchar++;
}
c = fgetc(ptr);
printf("%c", c);
}
最后的输出是:“just write char Nr. 36 in line: 22”
但是写入文件的最后一个字符是第 10 行的 Nr 0...
【问题讨论】:
-
变量
content是什么?如何将 指针 的成员访问到结构(而不是像现在这样的非指针结构对象)? -
另外,你确实在调用函数
write_content之前声明了它? -
@Someprogrammerdude
content是一个 content_t 类型的变量,定义在函数 write_content 的头部,我不知道... -
@Someprogrammerdude 我没有,但我现在已经更改了它,以便在我调用它之前声明它。警告消失了,错误依然存在
-
不,
content是指向content_t的指针。我很抱歉听起来可能居高临下,但请回到你的书、教程或课堂笔记,阅读有关成员评估结构指针的信息,以及“箭头”运算符->。
标签: c arrays pointers fopen fgets