gpt4 book ai didi

c - 当第一个标记为空时需要 strtok 函数的帮助

转载 作者:太空宇宙 更新时间:2023-11-04 08:54:00 25 4
gpt4 key购买 nike

在 strtok 函数方面需要帮助

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

int main()
{
char string[100], *ptr = NULL;

memset(string, 0, 100);
strcpy(string, "abc#efg#xyz");

ptr = strtok(string, "#");
fprintf(stderr, "ptr = [%s]\n", ptr);

ptr = strtok(NULL, "#");
fprintf(stderr, "ptr = [%s]\n", ptr);

ptr = strtok(NULL, "#");
fprintf(stderr, "ptr = [%s]\n", ptr);
return 0;
}

输出是

ptr = [abc]
ptr = [efg]
ptr = [xyz]

这很好,但是如果第一个标记为空,则对 strtok 的第一次调用返回第二个标记。我的理解是,由于 token 不存在,它将在第一次调用时返回 null。

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

int main()
{
char string[100], *ptr = NULL;

memset(string, 0, 100);
strcpy(string, "#efg#xyz");

ptr = strtok(string, "#");
fprintf(stderr, "ptr = [%s]\n", ptr);

ptr = strtok(NULL, "#");
fprintf(stderr, "ptr = [%s]\n", ptr);

ptr = strtok(NULL, "#");
fprintf(stderr, "ptr = [%s]\n", ptr);
return 0;
}***

输出是

ptr = [efg]
ptr = [xyz]
ptr = [(null)]

最佳答案

根据 strtok 手册页(来自 man strtok):

A sequence of two or more contiguous delimiter characters in the parsed string is considered to be a single delimiter. Delimiter characters at the start or end of the string are ignored. Put another way: the tokens returned by strtok() are always nonempty strings.

关于c - 当第一个标记为空时需要 strtok 函数的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18275282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com