【发布时间】:2015-04-15 11:14:26
【问题描述】:
我正在编写一个通过程序,但我遇到了一个小问题。 我想根据从文件中读取的句子大小动态分配内存位置。这个指针也应该在内容中有这个文本
什么时候文件会有句子:
“一二三四五”
然后我想要 char* 示例,其中分配了 25 个字符的内存位置。
当我想在控制台上打印此文本时,我想通过
printf("%c", example);
控制台应该是这样的:
一二三四五
我就是这样做的:
char* czyt = (char*)malloc(sizeof(fgets( line/*static variable*/,
500 /*MAX LINE LENGHT*/,
wejscie /*FILE*/ )));
但是在这种情况下czyt没有这句话,我需要使用静态变量。
【问题讨论】:
-
当您在指针上使用
sizeof时(如fgets返回的指针),您会得到指针 的大小,而不是指针所指向的大小。如果要获取字符串的长度,请使用strlen。 -
是的。确实如此。但是当我使用 strlen 时,我仍然需要使用静态变量:“line”。我想 czyt 在内容中包含“一二三四五”+ 25 个字符的内存位置。
-
对了,你有没有想过如果
fgets调用失败会发生什么?分配零字节可能仍然有效,您根本不知道输入操作失败了。 -
我想知道该怎么做。我需要编写程序,将按字母顺序对所有行进行排序,何时获得文件“第一行:Ccccc Bbbbb 第二行:Aaaaa”然后输出应如下所示:“第一行:Aaaaa 第二行:Bbbbb Cccccc”
-
@TymoteuszPinior - 使用 Joachim Pileborg 的建议,但将其与指针一起使用,而不是 line 变量