gpt4 book ai didi

无法让 C 程序和 strsep() 和 getenv() 一起工作

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:09 27 4
gpt4 key购买 nike

我以前有过这个工作,但我使用的是指针。 getenv() 不断崩溃,所以我使用 sprintf() 复制了结果。现在我想用 : 删除并只打印第一次出现的地方。请帮忙!

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

void main(void) {

char buf[999];
const char *token;

// HTTP_PROXY == 8.8.8.8:8888, end result should print 8.8.8.8

sprintf(buf, "%s", getenv("HTTP_PROXY"));
*token = strsep(&buf, ":");
printf("New result: %s\n", token);

}

最佳答案

因为 strsep 需要一个指向指针的指针,所以您必须传递一个指向指针的指针,而不是指向数组的指针。这不是同一件事;创建一个指针,并将其赋值给buf。将指向新指针的指针传递给 strsep 以解决第一个问题。

第二个问题是因为strsep返回的是一个指针,你需要把它赋给token,而不是*token:

char buf[999];
const char *token;
// HTTP_PROXY == 8.8.8.8:8888, end result should print 8.8.8.8
sprintf(buf, "%s", getenv("HTTP_PROXY"));
char *ptr = buf; // Since ptr, is a pointer...
token = strsep(&ptr, ":"); // ...you can pass a pointer to pointer
printf("New result: %s\n", token);

关于无法让 C 程序和 strsep() 和 getenv() 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41233945/

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