gpt4 book ai didi

c - 标记字符串后无法打印结果

转载 作者:行者123 更新时间:2023-11-30 16:09:54 31 4
gpt4 key购买 nike

我需要帮助找出以下代码不起作用的原因。我想将 buf 字符串拆分为标记,并将其保存到 struct char *array 字段中。并打印出其内容。

#include <stdio.h>
#include <string.h>
struct parser{
char *array[10];
};

void stages(char buf[]){
struct parser t;
int i = 0;
char *p = strtok (buf, "|");

while (p != NULL)
{
t.array[i++] = p;
p = strtok (NULL, "|");
}

}

int main() {
struct parser t;
char buf[] ="ls < one | more | sort";
int i = 0;

stages(buf);
for (i = 0; i < 3; i++)
printf("%s\n", t.array[i]);

return 0;
}

最佳答案

函数stages中的变量t是一个局部变量。

这与 main 中的变量 t 不同。

要在 main 中打印 t,您需要将指向 struct parser 的指针传递给函数并删除局部变量 t

#include <stdio.h>
#include <string.h>
struct parser{
char *array[10];
};

void stages(char buf[],struct parser *ptr){
int i = 0;
char *p = strtok (buf, "|");

while (p != NULL)
{
ptr->array[i++] = p;
p = strtok (NULL, "|");
}

}

int main() {
struct parser t;
char buf[] ="ls < one | more | sort";
int i = 0;

stages(buf,&t);
for (i = 0; i < 3; i++)
printf("%s\n", t.array[i]);

return 0;
}

关于c - 标记字符串后无法打印结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58991160/

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