#include int strlen(char *s) { char *p = s; while (*p != '\0') p++; return p - s; } char * ptr7 = "Vladyslav"; int mojstlen(){ char * s = "Vladyslav"; uint8_t wynik =0; wynik = strlen (s); } void strcpy(char *s, char *t) { while (*s++ = *t++); } #define ALLOCSIZE 10000 static char allocbuf[ALLOCSIZE]; static char *allocp = allocbuf; char *alloc(int n) { if (n % 4 != 0) { n += 4 - (n % 4); } if (allocbuf + ALLOCSIZE - allocp >= n) { allocp += n; return allocp - n; } else return 0; } // def. model danych //pre processor #define LEN (8+2)*10 struct model { char * str; uint32_t len ; }; //alg // prosta implementacji func. z bibl. std. strok przy uzyciu gpt3.5 // #define NULL ((void*) 0) // // Funkcja pomocnicza do sprawdzania, czy znak jest wśród delimiterów bool is_delim(char c, const char *delims) { while (*delims) { if (c == *delims) { return true; } delims++; } return false; } // Najprostsza implementacja funkcji strtok char *simple_strtok(char *str, const char *delims) { static char *static_str = (char *) NULL; // Przechowuje wskaźnik do bieżącej pozycji w ciągu // Jeśli przekazano nowy ciąg, zaktualizuj static_str if (str == NULL) { return (char *) NULL; // str nie wskazuje na zdanie !!! } static_str = str; // " .,mpabi" // ^ // Pomiń początkowe delimitery while (*static_str && is_delim(*static_str, delims)) { static_str++; } // Jeśli doszliśmy do końca ciągu, zwróć NULL if (*static_str == '\0') { return (char *) NULL; } // Zapisz początek tokenu char *token_start = static_str; // Znajdź koniec tokenu while (*static_str && !is_delim(*static_str, delims)) { static_str++; } // Jeśli znaleziono delimitery, zamień je na '\0' i zaktualizuj static_str if (*static_str) { *static_str = '\0'; static_str++; } // Zwróć początek tokenu return token_start; } char buf[100]; struct model * p = (struct model *) buf; //p[1] ////func alg //in: ptr to date //return: count of words int alg (const char * ptr) { char bufer[ALLOCSIZE]; strcpy(bufer, (char *)ptr); const char *delims = " ,.!?:;\n\t"; int8_t count = 0; char *token = simple_strtok(bufer, delims); while (token != (char *)NULL) { p[count].str = token; p[count].len = strlen(token); token = simple_strtok((char *)NULL, delims); count++; } return count; } int main() { char *str = "If wantered relation no surprise of all"; alg(str); asm ("nop"); return 1; }