Der Grund, warum ich dies tun möchte, ist, weil ich von einer Datei Zeile für Zeile lesen möchte, und für jede Zeile überprüfen, ob es eine Regex entspricht. Ich benutze die Funktion getline(), die die Zeile in eine char *
Variable einfügt. Ich versuche regexec()
zu verwenden, um nach einer Regex-Übereinstimmung zu suchen, aber diese Funktion möchte, dass Sie die Zeichenfolge angeben, die als const char *
übereinstimmt.C - Kann ich eine const char * Variable von char * erstellen?
Also meine Frage ist, kann ich eine const char *
aus einer char *
erstellen? Oder gibt es vielleicht einen besseren Weg, das Problem anzugehen, das ich hier zu lösen versuche?
EDIT: Ich wurde gebeten, ein Beispiel zu geben, worüber ich nicht nachgedacht habe und entschuldige mich dafür, dass ich gar keins gegeben habe. Ich habe die Antwort von @chqrlie vor dem Schreiben gelesen. Der folgende Code gibt einen Segmentierungsfehler an.
#define _GNU_SOURCE
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <stdbool.h>
#include <regex.h>
int main() {
FILE * file = fopen("myfile", "r");
char * line = NULL;
size_t len = 0;
ssize_t read;
regex_t regex;
const char * regexStr = "a+b*";
if (regcomp(®ex, regexStr, 0)) {
fprintf(stderr, "Could not compile regex \"%s\"\n", regexStr);
exit(1);
}
while ((read = getline(&line, &len, file)) != -1) {
int match = regexec(®ex, line, 0, NULL, 0);
if (match == 0) {
printf("%s matches\n", line);
}
}
fclose(file);
return 0;
}
Bitte [Bearbeiten] enthalten eine [MCVE], dass zeigt das Problem, das Sie haben, sowie die genaue Fehlermeldung, die Sie sehen. –
@KenWhite Beispiel hinzugefügt! –