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的輸出給了我喜歡[somehash] d [somehash] E [somehash] S [somehash]ķ打印文件的內容
ackward值我得到的輸出字是「DESK」,但是從內存中取出所有類型的隨機垃圾,我做錯了什麼?
注意:以下內容已分配給malloc(sizeof(char)),並在每次將單個字符添加到字符串時進行實時定位。
即輸出我應該得到應爲: d 德 德 臺的 而是說我得到我之前所示的U的事情。
編輯:
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';
}
我想這是C/C++? –
是的,它是C,忘了添加 –
開始的一個大問題 - 你的realloc調用中斷 - 查看realloc的手冊頁 –