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)) и выполняются при каждом добавлении одного символа в строку.
т.е. выход я должен получать должно быть: D De Des стол Но вместо того, что я получаю вещь я показанный U раньше.
EDIT:
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;
}
}
Я написал функцию-оболочку для перераспределить. Спасибо за помощь, но она все еще не решает проблему, я все еще получаю [somecrapmemoryhash] [письмо] [somecrapmemoryhash] [письмо] при попытке распечатать результат.
APPEND STRING:
void appendString(char* inputString, int inputChar)
{
int stringLenght = strlen(inputString);
inputString[stringLenght - 1] = inputChar;
inputString[stringLenght] = '\0';
}
Я предполагаю, что это C/C++? –
Да, это C, забыли добавить –
Одна большая проблема для начала - ваш вызов realloc нарушен - посмотрите на страницу man для realloc –