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 delimiterssize_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.