gpt4 book ai didi

c - C中使用指针从字符串中提取子字符串

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

我目前正在尝试提取缓冲区内的子字符串。目标是通过空格和符号解析字符串以便稍后编译。我试图解析的行是我文件的第一行。

void append(char* s, char c)
{
int len = strlen(s);
s[len] = c;
s[len+1] = '\0';
}

int main(void){
char str[] = "program example(input, output);";

char *f = str;
char *b = str;

char token[10];

if(*f != '\0'){
while (*f != ' ')
{
append(token,*f);
f++;
}
f++;
printf("%s",token);
token[9] = '\0';
}
return 0;
}

我清除 token 字符串是否错误?代码仅返回:

program

但它应该返回

program
example(input,
output);

最佳答案

您的代码存在一些根本性错误(缓冲区溢出的可能性) 在你的append()函数等中)。据我所知,我所做的更改足以让代码产生所需的结果。

int main(void){    
char str[] = "program example(input, output);";

char *f = str;

char *token=(char *)malloc((strlen(str)+1)*sizeof(char));
char *b = token;

while(*f != '\0'){
while (*f && *f != ' ')
{
*b++=*f;
f++;
}
if(*f) f++;
*b=0;
b=token;
printf("%s\n",token);
}
free(token);
return 0;
}
$ ./a.out programexample(input,output);

关于c - C中使用指针从字符串中提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52470066/

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