gpt4 book ai didi

c - 我需要将一个字符串分成三个不同大小的部分

转载 作者:行者123 更新时间:2023-11-30 16:15:56 25 4
gpt4 key购买 nike

所以,我必须做一个词汇表,scanf 将始终读取一个字符和一些文本,第一个字符是我需要执行的操作,例如删除某些内容、包含或打印。另一部分是我要添加或删除的单词,剩下的就是含义。有时我只会收到表示操作的字符,例如“打印全部”,或者我可以收到类似“e word Meaning Meaning”之类的内容来删除该含义,但我也可以收到“E Word”并删除相关的单词和含义,因此条目的大小并不总是相同。参赛案例为:

i word meaning
q word
e word
e word meaning
p

“含义”是一个字符串,例如“具有红色”

我尝试使用 strtok 和 strcat 将其组合在一起以了解其含义,但没有成功,我留在这里的这段代码只是一个例子,我知道这不起作用

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

int main(void){
char str[] = "a bbbbbbbbbb cccc ccccccccccc cccc";
char* temp;
char* rest = str;
int i = 0;

char op[2];

while ((temp = strtok_r(rest, " ", &rest))){
printf("%s ", temp);
if (i>=2){
strcat(op[2],temp);
}
op[i]=temp;
i++;
}

return(0);
}

Action :a词语: bbbbbbbbbb含义:cccc ccccccccccc cccc

最佳答案

如果abbbbbbbbbb不包含空格,则调用strtok() 3次:

char str[] = "a bbbbbbbbbb cccc ccccccccccc cccc"; 
char *op[3]; // Changed to char * and increased size

// Note: the last call to strok changes the delimiter
if (NULL != (op[0] = strtok(str, " "))) {
if (NULL != (op[1] = strtok(NULL, " "))) {
if (NULL != (op[2] = strtok(NULL, ""))) {
printf("%s / %s / %s\n", op[0], op[1], op[2]);
}
}
}

输出

a / bbbbbbbbbb / cccc ccccccccccc cccc

或者,如果您喜欢将所有内容都写在一行中:

if ((op[0] = strtok(str, " ")) && (op[1] = strtok(NULL, " ")) && (op[2] = strtok(NULL, ""))) {
printf("%s / %s / %s\n", op[0], op[1], op[2]);
}

关于c - 我需要将一个字符串分成三个不同大小的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56903421/

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