gpt4 book ai didi

C 中的 sscanf 可以写在 char* 而不是 char[] 上吗?

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

我正在寻找标准 C 中解析字符串的最简单方法。字符串中的单词数是固定的,但每个单词的长度不是。该代码将在内存有限的微处理器上运行,因此我不能只分配一个过大的缓冲区,我只想分配我需要的内存。

以下代码有效,但我希望单个单词为 char* 。有什么办法解决这个问题吗?

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

int main(void) {

char * my_words = "foo bar 1 2";

char word1[20];
char word2[20];
char word3[20];
char word4[20];

int match = sscanf(my_words,"%s %s %s %s",word1,word2,word3,word4);

printf("Matches: %d\r\n",match);

printf("%s\r\n",word1);
printf("%s\r\n",word2);
printf("%s\r\n",word3);
printf("%s\r\n",word4);

return 0;
}

谢谢

最佳答案

要进行解析,您可以使用 strtok()功能。一个简单的方法可以是这样你也可以修改它

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

int main(void) {

char const *my_words = "foo bar 1 2";
char *str = malloc(1 + strlen(my_words));
strcpy(str, my_words);
int countWord = 0;
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ");
++countWord;
}

printf("Total words = %d\n", countWord);

return 0;
}

关于C 中的 sscanf 可以写在 char* 而不是 char[] 上吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35993672/

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