?
servus,
hab es mal gelöst bei unklarheiten einfach fragen
/* Teilstring.c */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char** create_sub_string_array(char*, const char, int* );
int main() {
char line[1024],trenn=';',*p;
char **subStrings;
int i,j,sub_size;
memset(line, '\0', 1024);
printf("Beliebigen String eingeben und mit \";\" trennen!\n");
scanf("%s",line);
p=line;
for (i=0 ; i<=100 ; i++){
if (*p != trenn)
printf("%c",*p);
else
printf("\n");
p++;
}
printf("\n\n\n\n");
subStrings=create_sub_string_array(line,trenn, &sub_size);
fprintf(stderr, "\nSubstring array\n");
for(i=0;i<sub_size;i++)
{
fprintf(stderr, "%s",subStrings[i]);
fprintf(stderr, "\t%d\n", i);
}
fprintf(stderr, "\n-----------------\n");
return(0);
}
char** create_sub_string_array(char *str, const char token, int *count_substrings)
{
char **ret, *first, *last ;
int i,token_count=0,tmp;
int count=0;
first=str;
last=0;
for(i=0;i<strlen(str);i++)
{
if(str[i]==token)
{
token_count++;
}
}
*count_substrings=1+token_count;
ret=(char**)malloc((token_count+1)*sizeof(char*));
for(i=0;i<strlen(str);i++)
{
if(str[i]==token)
{
last=str+i;
tmp=last-first;
ret[count]=(char*)malloc((tmp+1)*sizeof(char));
memset(ret[count], '\0', tmp);
strncpy(ret[count],first,tmp);
fprintf(stderr, "---- %s----\n", ret[count]);
ret[count][tmp+1]='\0';
first=last+1;
count++;
}
}
ret[count]=(char*)malloc((strlen(first))*sizeof(char));
memset(ret[count], '\0', tmp);
strcpy(ret[count],first);
return ret;
}