如何用C将字符串分隔成单独的项目(用空格分隔)

时间:2014-10-09 21:43:52

标签: c arrays string

抱歉,我不确定如何正确说出我遇到的问题。 我正在接受用户输入的无符号字符,比方说 unsigned char array = "123 343 342 4235 87 34 398"现在我希望将该字符串中的每个数字除以空格分成一个单独的数组

items[0] = 123 items[1] = 343 items[2] = 342

等等。我该如何处理?

我忘了提到我正在编译Linux tutorialspoint.com/c_standard_library/c_function_strtok.htm

不为我编译或工作

2 个答案:

答案 0 :(得分:0)

这确实是一个常见问题,例如: Tokenizing strings in C

但无论如何,这是一个答案:

#include <stdio.h>
#include <string.h>

int main(void) {
    const int maxParsed = 32;
    char array[] = "123 343 342 4235 87 34 398";

    char* parsed[maxParsed];
    char* token = strtok(array, " ");

    int numParsed = 0;
    int i;

    while(token) {
        parsed[numParsed] = token;
        token = strtok(NULL, " ");
        numParsed++;
        if(numParsed == maxParsed) { break; }
    }


    for(i=0; i<numParsed; i++) {
        printf("parsed string %d: %s \n", i, parsed[i]);
    }
}

编辑:此代码在输入非空且不包含分隔符的边缘情况下失败。如果第一次调用strtok()返回NULL,则应检查该条件。

答案 1 :(得分:-1)

你想在atoi的combinaison中使用strtok来检索整数

我调整了tutorialpoints.

中的库示例
#include <string.h>
#include <stdio.h>

int main()
{
   const char str[27] = "123 343 342 4235 87 34 398";
   const char s[2] = " "; //Your delimiter, here a singlespace
   char *token;

  /* get the first token */
  token = strtok(str, s);

  /* walk through other tokens */
  while( token != NULL ) 
  {
      printf( " %d\n", atoi(token) ); // atoi converting char* to int !

      token = strtok(NULL, s);
  }

  return 0;
}