文字列に文字を追加しようとしています...残念ながら、後で文字列のメモリを解放できません。そのため、文字列がどんどん長くなります。ファイルを読み取ると、すべてのリニーが明らかに発生してはならない文字列に追加されました
char* append_char(char* string, char character)
{
int length = strlen(string);
string[length] = character;
string[length+1] = '\0';
return string;
}
私は次のような文字列にmemを割り当てました
char *read_string = (char *)malloc(sizeof(char)*500);
関数を呼び出し、append_char(read_string,buffer[0]);
文字列全体がビルドされた後に解放しますfree(read_string);
append_char()を呼び出すと、memの割り当てが変更されるため、それを取得できなくなると思います。
編集:これは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;
}