| Код | #include <stdlib.h> #include <stdio.h>
size_t CreateStringArray(const char *str, const char *word, char ***ptrArr) { size_t wordLength, nArray; const char *p = str, *q = str; char **arr = 0;
if(!ptrArr) return 0; wordLength = strlen(word); p = str; q = str; arr = 0; nArray = 0; while((p = strstr(p, word)) != 0) { arr = realloc(arr, (nArray+1)*sizeof(char*)); arr[nArray] = malloc(p-q+wordLength+1); memcpy(arr[nArray], q, p-q+wordLength); arr[nArray][p-q+wordLength] = '\0'; ++nArray; p += wordLength; q = p; } *ptrArr = arr; return nArray; }
int main() { char buf[260], **arr; size_t n, i;
printf("Enter string: "); fgets(buf, 260, stdin);
n = CreateStringArray(buf, ".", &arr); printf("Total %u lines\r\n", n);
for(i = 0; i < n; ++i) printf("item[%u]=\"%s\"\n", i, arr[i]);
for(i = 0; i < n; ++i) free(arr[i]); free(arr);
fflush(stdin); getchar(); return 0; } |
|