Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C将字符串分隔为单独的项(用空格分隔)_C_Arrays_String - Fatal编程技术网

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

如何使用C将字符串分隔为单独的项(用空格分隔),c,arrays,string,C,Arrays,String,对不起,我不知道如何正确地表达我遇到的问题。 我接受用户的输入,比如说,无符号字符 unsigned char array=“123 343 342 4235 87 34 398”现在,我想将该字符串中的每个数字按空格分割成一个单独的数组 项目[0]=123 项目[1]=343 项目[2]=342 等等。我怎样才能做到这一点 我忘了说我是用Linux编译的,所以 tutorialspoint.com/c_standard_library/c_function_strtok.htm 不为我编译或工

对不起,我不知道如何正确地表达我遇到的问题。 我接受用户的输入,比如说,无符号字符
unsigned char array=“123 343 342 4235 87 34 398”
现在,我想将该字符串中的每个数字按空格分割成一个单独的数组

项目[0]=123
项目[1]=343
项目[2]=342

等等。我怎样才能做到这一点

我忘了说我是用Linux编译的,所以 tutorialspoint.com/c_standard_library/c_function_strtok.htm


不为我编译或工作

您想将strtok与atoi结合使用来检索整数吗

我将图书馆的例子改编自

#包括
#包括
int main()
{
const char str[27]=“123 343 342 4235 87 34 398”;
const char s[2]=“”;//您的分隔符,这里是一个单空格
字符*令牌;
/*获取第一个令牌*/
令牌=strtok(str,s);
/*浏览其他代币*/
while(令牌!=NULL)
{
printf(“%d\n”,atoi(token));//将char*转换为int的atoi!
令牌=strtok(空,s);
}
返回0;
}

这确实是一个常见的问题,例如:

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

#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]);
    }
}
#包括
#包括
内部主(空){
const int maxpassed=32;
字符数组[]=“123 343 342 4235 87 34 398”;
char*parsed[maxpassed];
char*token=strtok(数组“”);
int numParsed=0;
int i;
while(令牌){
解析的[numParsed]=令牌;
令牌=strtok(空,“”);
numParsed++;
如果(numParsed==maxParsed){break;}
}

对于(i=0;istrtok()
items
char*
int
的数组吗?这个问题经常被问到。你已经搜索过了吗?这里的边缘情况是,如果输入只有一组没有空格的数字。那么你的第一个
strtok
将返回NULL,你将不会解析任何东西。Downvoter:请解释为什么你会这样做我觉得这个答案不合适。
#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]);
    }
}