#include <stdio.h>
#include <stdint.h>
// void split_string(const char *str, char delimiter, char tokens[10][20], uint8_t *count) {
// int j =0,k=0;
// //while(str[i]!='\0'){
// for(int i =0; str[i]!='\0';i++){
// if(str[i]!= delimiter){
// tokens[j][k++] = str[i];
// }
// else{
// tokens[j][k]='\0';
// j++;
// k=0;
// }
// }
// tokens[j][k]='\0';
// *count = j+1;
// }
void split_string( const char *str, char delimeter, char tokens[10][20], uint8_t *count){
int j =0;
int k=0;
for(int i =0; str[i]!='\0'; i++){
if(str[i]!= delimeter){
tokens[j][k++] = str[i];
}else{
tokens[j++][k]='\0';
k=0;
}
}
tokens[j][k]='\0';
*count = j + 1;
}
// int main() {
// char str[101];
// char delimiter;
// fgets(str, sizeof(str), stdin);
// scanf(" %c", &delimiter);
// // Remove newline
// uint8_t i = 0;
// while (str[i]) {
// if (str[i] == '\n') { str[i] = '\0'; break; }
// i++;
// }
// char tokens[10][20];
// uint8_t count = 0;
// split_string(str, delimiter, tokens, &count);
// for (uint8_t i = 0; i < count; i++) {
// printf("%s\n", tokens[i]);
// }
// return 0;
// }
int main(){
char str[100];
char delimeter;
fgets(str, sizeof(str), stdin);
scanf("%c", &delimeter);
uint8_t i =0;
while(str[i]){
if(str[i] == '\n') {
str[i] ='\0';
break;
}
i++;
}
char token[10][20];
uint8_t count = 0;
split_string(str, delimeter, token, &count);
for(int i=0;i<count;i++){
printf("%s\n", token[i]);
}
return 0;
}
/*
while(*str && row<MAX_TOKENS)
{
col=0;
while( (*str) && (*str != delimiter))
{
if(col< MAX_LEN-1)
{
tokens[row][col]=*str;
col++;
}
str++;
}
tokens[row][col]='\0';
row++;
(*count)++;
if(*str == delimiter) str++;
}
*/
{
while(*str && row < 10){// safety check is good
int col =0;
while((*str) && (*str != delimeter)){
if(col< 20){ // safety check is good
tokens[row][col] = *str;
col__;
}
str++;
}
token[row][col] = '\0';
row++;
if(*str == delimeter) *str++;
}
*count = row;
return;
}
Input
cmd1,cmd2,cmd3 ,
Expected Output
cmd1 cmd2 cmd3