0 Tage Serie
c / intermediate
Snippet

Präzise String-Suche mit strcspn

Die Funktion strcspn berechnet die Länge des Anfangssegments eines Strings, das vollständig aus Zeichen besteht, die NICHT in einer angegebenen Menge enthalten sind. Sie ist sehr effizient, um das erste Vorkommen eines beliebigen Zeichens aus einer Gruppe von Trennzeichen zu finden, und gibt den Index des Treffers zurück.

snippet.c
c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <string.h>
int main() {
const char *csv_line = "data1,data2;data3";
const char *delimiters = ",;";
// Find length of segment NOT containing delimiters
size_t pos = strcspn(csv_line, delimiters);
printf("First delimiter found at index: %zu\n", pos);
if (csv_line[pos] != '\0') {
printf("Delimiter was: '%c'\n", csv_line[pos]);
}
return 0;
}
Erklärung
1
const char *delimiters = ",;";
Definiert eine Menge von Zeichen, nach denen gesucht werden soll.
2
size_t pos = strcspn(csv_line, delimiters);
Gibt die Anzahl der Zeichen zurück, bevor ein Zeichen aus 'delimiters' erscheint.
3
if (csv_line[pos] != '\0')
Wenn der Index kleiner als die Stringlänge ist, wurde tatsächlich ein Trennzeichen gefunden.