Я пытаюсь открыть файл (Myfile.txt) и объединить каждую строку в один буфер, но получаю неожиданный вывод. Проблема в том, что мой буфер не обновляется последними конкатенированными строками. Любая вещь, отсутствующая в моем коде?String/char * concatinate, C
Myfile.txt (Файл, чтобы открыть и прочитать)
Good morning line-001:
Good morning line-002:
Good morning line-003:
Good morning line-004:
Good morning line-005:
.
.
.
Mycode.c
#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[])
{
/* Define a temporary variable */
char Mybuff[100]; // (i dont want to fix this size, any option?)
char *line = NULL;
size_t len=0;
FILE *fp;
fp =fopen("Myfile.txt","r");
if(fp==NULL)
{
printf("the file couldn't exist\n");
return;
}
while (getline(&line, &len, fp) != -1)
{
//Any function to concatinate the strings, here the "line"
strcat(Mybuff,line);
}
fclose(fp);
printf("Mybuff is: [%s]\n", Mybuff);
return 0;
}
Am ожидал мой выход будет:
Mybuff is: [Good morning line-001:Good morning line-002:Good morning line-003:Good morning line-004:Good morning line-005:]
Но, я получаю ошибку сегментации (ошибка времени выполнения) и значение мусора. Кто-нибудь думает? Благодарю.
вы испытываете переполнение буфера с жестким кодом 100. Используйте указатели, * hint: realloc * – t0mm13b
@ t0mm13b: Спасибо за повтор, но все та же проблема! Добавлен Mybuff = realloc (Mybuff, sizeof mybuff), ... вы можете помочь мне в PLS, iam, новом для языка C. –
Прочтите [это примечания к лекциям Корнелла] (http://www.cs.cornell.edu/courses/cs2022/2011sp/lectures/lect04.pdf)! Получите также книгу K & R. Начните оттуда. – t0mm13b