from file without punctuation chars?
i tryed with "%64[a-zA-Z]%*[^a-zA-Z]" but it unsuccessful
#include <stdlib.h> #include <stdio.h> #include <inttypes.h> #include <ctype.h> #include <stdbool.h> typedef struct { size_t beginI, endI; } StrRegion; int main(void) { // Example data char const str[] = "Once upon a time in a land far far away there was a strange and vast forest"; // Storage int8_t nWords = 0; StrRegion regions[30]; // Find the words bool inWord = false; size_t i = 0; for (; str[i] != '\0'; i++) { if (inWord) { if (isgraph(str[i])) { continue; } inWord = false; regions[nWords - 1].endI = i; continue; } if (isgraph(str[i])) { if (nWords > sizeof(regions) / sizeof(regions[0])) { fprintf(stderr, "Reached region storage limit "); exit(EXIT_FAILURE); } inWord = true; regions[nWords++].beginI = i; } } if (inWord) { regions[nWords - 1].endI = i; } // Print them for (int8_t i = 0; i < nWords; i++) { StrRegion const r = regions[i]; size_t len = r.endI - r.beginI; printf( "%" PRIi8 ": From %zu to %zu (length %zu): ", i, r.beginI, r.endI, len); fwrite(str + r.beginI, sizeof(str[0]), len, stdout); puts(""); } return EXIT_SUCCESS; }
im found somethinf easier: while (fscanf(file, " %64[a-zA-Z]", word) == 1) { fscanf(file, "%*[^a-zA-Z]"); printf("%s\n", word); }
@TRGWII whats wrong?
regex for something so simple
it just work TM I dont think so its good solution, but in anycase its simpler than man above provide and parsing with bunch of funcs from string.h
How would you solve it?
I didn't include string.h
well what is he really testing for? "64" followed by a character and / or "anything that isn't a character"?
Oh, I haven't used fscanf so I just assumed %64 has a special meaning. Didn't actually know he is searching for literal "64"
I don't know what it means either tbh, but it doesn't seem that complex anyway
Yep
Обсуждают сегодня