Я пытаюсь прочитать файл и строки следующую строку, чтобы увидеть, если она начинается с пробела, например:Использование strcat для конкатенации строк из файла
First line
second line
Third line
fourth line
Где, когда я читаю файл в, я хочу проверить и посмотреть, есть ли следующая строка, имеет пробел, если это так, я хочу, чтобы strcat две строки (в этом случае первая и вторая строка).
Таким образом, для первого примера:
1.) Читать в первой строке, читайте дальше ко второму, видят, что их пространство, и strcat обе строки, что делает "First linesecond line"
(Повторите эти действия для других линий, следуйте этой схеме).
Вот мой пойти на это:
int main(void) {
FILE * file = fopen("file.txt","r");
if(file==NULL) { return 0; }
char * fileBuffer = malloc(sizeof(char)*100);
char * temp = malloc(sizeof(char)*100);
while(fgets(fileBuffer,100,file) != NULL) {
if(isspace(fileBuffer[0])) {
strcpy(temp,fileBuffer);
//store line that has a space in static temporary variable
}
else {
if(strcmp(temp,"") != 0) { //if temp is not empty
strcat(fileBuffer,temp);
}
}
}
free(fileBuffer);
free(temp);
return 0;
}
Однако это не работает. Что происходит, когда fgets выполняется, он читает первую строку, видит, что нет пробела, а затем переходит к следующей строке, видит, что есть пробел, сохраняет его, но теперь fileBuffer больше не содержит первую строку , а второй.
Так что, когда я буду в следующий раз, я не получу правильный результат «Первая строка второй линии».
Вместо этого я получаю результат третьей линии, смешанной со вторым, что не то, что я хочу.
Я не совсем уверен, как исправить мою логику здесь, любые идеи?
использование 'MemSet()' для установки 'fileBuffer' к 0 как последний оператор цикла while. –
'temp' может быть недостаточно большим, чтобы держать весь файл' fileBuffer' –
Я исправил выделение для temp. Также Sourav Я не совсем уверен, что вы подразумеваете под «в последнем цикле». – TTEd