嘿,我的代码有问题,我得到创建令牌,并让它添加到一个二维数组令牌,但它不能正常工作。知道为什么吗。

/* strtok example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="This a sample string";
char * st[4][0];
char * pch;
int i;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ");
for(i=0;i<4;i++)
{
st[i][0]=pch;
}

}
print(st, i);
return 0;
}

void print(char st[4][0], int i)
{
for(i=0;i<4;i++)
{
printf("%d - %s",i ,st[i][0]);
}
}

最佳答案

有许多问题:请与此代码进行比较:

/* strtok example */
#include <stdio.h>
#include <string.h>

void print(char *st[4])  // Fixed parameter type
{
    int i; // i is a local counter
    for(i=0;i<4;i++)
    {
        printf("%d - %s\n",i ,st[i]);
    }
}

int main ()
{
    char str[] ="This a sample string";
    char * st[4];  // Corrected array definition
    char * pch;
    int i=0;       // Initialise counter i to 0
    printf ("Splitting string \"%s\" into tokens:\n",str);
    pch = strtok (str," ");
    while (pch != NULL)
    {
        st[i]=pch;   // Store string before overwriting pch, and only store in a single location
        printf ("%s\n",pch);
        pch = strtok (NULL, " ");
        i++;         // increment i inside loop
    }
    print(st);
    return 0;
}

07-24 09:38
查看更多