我一直在嘗試按空格字符拆分字串。字串的格式是a, b,我需要將其拆分為aand b。我寫的代碼如下,但回圈總是在列印最后一個字符之前終止。
void tokenize(char *str)
{
int i = 0, k = 0;
char *ch = malloc(1000);
printf("%s\n", str);
while(i < strlen(str))
{
if(str[i] == ' ')
{
k = 0;
printf("%s", ch);
ch = malloc(1000);
i ;
}
else if(str[i] == ',')
i ;
else
{
ch[k ] = str[i ];
}
}
}
輸出
q1, q2
q1
從上面的輸出中可以明顯看出,它在列印之前終止q2,解決此問題的解決方案值得贊賞。
uj5u.com熱心網友回復:
您需要在回圈后列印,因為列印僅在讀取空格時完成:
#define STRLEN 1024
void tokenize(const char *str)
{
int i = 0, k = 0;
free(ch);
char *ch = malloc(STRLEN);
printf("%s\n", str);
while(i < strlen(str))
{
if(str[i] == ' ')
{
k = 0;
printf("%s\n", ch);
ch = malloc(STRLEN);
i ;
}
else if(str[i] == ',')
i ;
else
{
ch[k ] = str[i ];
}
}
printf("%s\n", ch);
free(ch);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379861.html
上一篇:在C中讀取矩陣
