'strtok()' er lidt mere komplekst end dét...derfor er det også nemmere at bruge 'strchr()'.
Du finder rigtig nok noget tekst, som indeholder et tal plus noget mere, men du ville have tallet alene...derfor har jeg lavet en funktion, som trækker tallet ud af teksten og returnerer det. Se her:
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- #include <stdlib.h>
-
- const int retrieve_number(const char * str) {
- int result = -1;
- char * ptr;
- if ((ptr = strchr(str, ':'))) {
- while (ptr > str && isdigit(*(--ptr))) { }
- result = atoi(ptr + 1);
- }
- return result;
- }
-
- void show_number(const char * str) {
- printf("%s : %d\n", str, retrieve_number(str));
- }
-
- int main(int argc, char const *argv[]) {
- show_number("@MAIN_2560_1024.PROCESSPICTURE_1:F1_1_OPERATING");
- show_number("@MAIN_2560_1024.PROCESSPICTURE_7:F1_1_OPERATING");
- show_number("@MAIN_2560_1024.PROCESSPICTURE_45:F1_1_OPERATING");
- show_number("@MAIN_2560_1024.PROCESSPICTURE_9876:F1_1_OPERATING");
- return 0;
- }
Her kører jeg programmet:
robert-crazy-laptop:~ $ ./t
@MAIN_2560_1024.PROCESSPICTURE_1:F1_1_OPERATING : 1
@MAIN_2560_1024.PROCESSPICTURE_7:F1_1_OPERATING : 7
@MAIN_2560_1024.PROCESSPICTURE_45:F1_1_OPERATING : 45
@MAIN_2560_1024.PROCESSPICTURE_9876:F1_1_OPERATING : 9876
Indlæg senest redigeret d. 01.11.2012 17:50 af Bruger #2695