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]K のような ackward 値を示します。
「DESK」という出力ワードを取得していますが、メモリからランダムなものがすべて取得されています。何が間違っていますか?
注: 以下は malloc(sizeof(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';
}