如何在C中从给定的行创建一个字符串数组?

时间:2016-02-20 08:29:14

标签: c arrays string

char a[100]="You are welcome";

现在我怎样才能将这一行中的单词变成字符串数组?

char b[5][20];
strcpy(b[0],"you");
strcpy(b[1],"are");
strcpy(b[2],"welcome");

通过这种方式,我们可以创建字符串数组。

但是我想动态地做任何给定的输入?

请帮忙......

2 个答案:

答案 0 :(得分:3)

strtok是你的朋友:

char a[] = "You are welcome";
char b[5][20] = {{0}};
char *pch;

pch = strtok( a," \t" );
int i = 0;
while( NULL != pch && i < 5)
{
    strcpy(b[i++], pch);
    pch = strtok( NULL, " \t\n" );
}

for( i = 0; i < 5; i++ )
{
    if( strlen(b[i]) > 0 )
    {
        printf( "b[%d] = %s\n", i, b[i] );
    }
}

不要忘记#include <string.h>

正如David C. Rankin指出的那样。我们只需检查第一个字符strlen即可取消\0。所以这是一个更好的解决方案(请注意,while处理的主strtok循环保持不变。)

i = 0; 
while (*b[i]) 
{ 
    printf( "b[%d] = %s\n", i, b[i] ); 
    i++; 
}

答案 1 :(得分:0)

Reference:strtok

您可以在循环中使用“scanf”代替“printf”,并将值存储在第二个数组中(在您的情况下为b)

 while (pch != NULL)   {
     printf ("%s\n",pch);
     pch = strtok (NULL, " ,.-");   }