【发布时间】:2019-04-14 11:34:02
【问题描述】:
我想将我的文件内容存储在一个动态字符串指针值中。 这是我的代码:
char *strPtr = NULL;
char tmpChar = "";
inputFile = fopen(input_file, "r");
fseek(inputFile, 0, SEEK_END); // seek to end of file
fileSize = ftell(inputFile); // get current file pointer
rewind(inputFile);
strPtr = (char*) realloc(strPtr, fileSize * sizeof(char));
int counter = 0;
while ((tmpChar = fgetc(inputFile)) != EOF)
{
strPtr[counter] = tmpChar;
counter++;
if (counter == fileSize)
printf("OK!");
}
printf("Filesize: %d, Counter: %d", fileSize,counter);
现在我的问题...使用最后一个 printf 我得到 2 个不同的值,例如:文件大小 127 和计数器 118。 另外,在我的 strPtr-Variable 的末尾有一个错误的输入,例如“ÍÍÍÍÍÍÍÍÍÍýýýýüe”。
Notepad++ 在文件末尾还说我在位置 127,那么 118 的问题是什么?
【问题讨论】:
-
您是否将
tmpChar声明为应有的int -
没有。 char tmpChar = "";
-
并以二进制模式打开
-
并终止 srring...请提供正确的minimal reproducible example,这还不是
-
什么是strPtr?它是如何声明的?它用什么值初始化,为什么要重新分配而不是分配?
标签: c file pointers counter filesize