C bietet nicht viel Komfort, Sie müssen sie alle selbst bereitstellen oder eine Bibliothek von Drittanbietern wie GLib verwenden. Wenn Sie neu in C sind, gewöhnen Sie sich daran. Sie arbeiten sehr nah an dem blanken
Metall
Silizium.
Im Allgemeinen lesen Sie eine Datei Zeile für Zeile mit fgets()
oder meine Vorliebe POSIX getline(), und die endgültige Newline abstreifen, sich durch im letzten Index suchen und es mit einem Null zu ersetzen, wenn es ein Newline ist.
#include <string.h>
#include <stdio.h>
char *line = NULL;
size_t line_capacity = 0; /* getline() will allocate line memory */
while(getline(&line, &line_capacity, fp) > 0) {
size_t last_idx = strlen(line) - 1;
if(line[last_idx] == '\n') {
line[last_idx] = '\0';
}
/* No double newline */
puts(line);
}
Sie können dies in eine kleine Funktion für die Bequemlichkeit setzen. In vielen Sprachen wird es als chomp
bezeichnet.
#include <stdbool.h>
#include <string.h>
bool chomp(char *str) {
size_t len = strlen(str);
/* Empty string */
if(len == 0) {
return false;
}
size_t last_idx = len - 1;
if(str[last_idx] == '\n') {
srt[last_idx] = '\0';
return true;
}
else {
return false;
}
}
Es wird lehrreich für Sie fgets
und getline
selbst zu implementieren zu verstehen, wie das Lesen Zeilen aus einer Datei tatsächlich funktioniert.
Zeigen Sie Ihre Arbeit bisher und jemand wird Ihnen eher helfen. – edtheprogrammerguy
Sicher nicht mit den Standard-Input-Bibliotheken. Aber es ist ziemlich einfach, jeden gelesenen Block von Zeichen zu durchlaufen und die Zeilenumbrüche zu entfernen. Warum tust du das nicht? – Gene
@Gene Ist getc nicht in der Standard-Input-Bibliothek? – nicomp