我正在尝试将一个字符附加到一个字符串......不幸的是我无法释放字符串的内存,这导致字符串变得越来越长......因为它读取一个文件,每个 linie 都会添加到显然不应该发生的字符串中
char* append_char(char* string, char character)
{
int length = strlen(string);
string[length] = character;
string[length+1] = '\0';
return string;
}
我为类似字符串分配了内存
char *read_string = (char *)malloc(sizeof(char)*500);
append_char(read_string,buffer[0]);
在构建整个字符串后调用该函数并释放它free(read_string);
我想一旦我调用 append_char() ,内存分配就会改变,这导致我无法掌握它。
编辑:这是使用 append_char() 的函数
char *read_log_file_row(char *result,int t)
{
filepath ="//home/,,,,,/mmm.txt";
int max = sizeof(char)*2;
char buffer[max];
char *return_fgets;
char *read_string = malloc(sizeof(char)*500);
file_pointer = fopen(filepath,"r");
if(file_pointer == NULL)
{
printf("Didn't work....");
return NULL;
}
int i = 0;
while(i<=t)
{
while(return_fgets = (fgets(buffer, max, file_pointer)))
{
if(buffer[0] == '\n')
{
++i;
break;
}
if(i==t)
{
append_char(read_string,buffer[0]);
}
}
if(return_fgets == NULL)
{
free(read_string);
return NULL;
/* return "\0";*/
}
if(buffer[0] != '\n')
append_char(read_string,buffer[0]);
}
fclose(file_pointer);
strcpy(result,read_string);
free(read_string);
return result;
}