openFile(argv[1],"r");
while(characterBuff != EOF)
{
characterBuff = fgetc(examFile);
memoryAlloc += 1;
string = expandRealloc(string, memoryAlloc);
appendString(string, characterBuff);
printf("%s\n", string);
}
closeFile();
free(string);
在以下代码中:我从 printf 获得的输出给了我 ackward 值,例如 [somehash]D[somehash]E[somehash]S[somehash]K
我得到的输出词是“DESK”,但是从内存中取出了各种随机的东西,我做错了什么?
注意:以下内容已使用 malloc(sizeof(char)) 分配,并在每次将单个 char 添加到字符串时重新分配。
即我应该得到的输出应该是:D De Des Desk 但我得到的不是我之前给你看的东西。
编辑:
char* expandRealloc(char* ptrS, size_t n)
{
void *tmp;
if((tmp = realloc(ptrS, n)) == NULL)
{
printf("Error: Memory leak possible; Closing Program");
exit(EXIT_FAILURE);
}
else
{
ptrS = tmp;
return ptrS;
}
}
我为 realloc 写了一个包装函数。感谢您的帮助,但它仍然没有解决问题,我在尝试打印结果时仍然得到 [somecrapmemoryhash][letter][somecrapmemoryhash][letter]。
附加字符串:
void appendString(char* inputString, int inputChar)
{
int stringLenght = strlen(inputString);
inputString[stringLenght - 1] = inputChar;
inputString[stringLenght] = '\0';
}