gpt4 book ai didi

c - 如何获取存储在双引号内的值

转载 作者:行者123 更新时间:2023-11-30 20:34:26 24 4
gpt4 key购买 nike

char string[200]="ret=\"y\"  err=\"000\"";
char stringg[50];
char *arg;
arg = strstr (string, "ret");
memcpy(stringg,arg+5,1);
printf(stringg);

我想复制“ret”的值,上面的程序给出了输出,但是当 ret 的值发生变化时,我必须在程序中进行更改。如何解决这个问题

最佳答案

在您的代码中,不需要对您的数组string给出限制。您可以简单地使用:

const char string[] = "ret=\"y\"  err=\"000\"";

strstr()找到"ret"的值,并检查没有返回NULL后,您可以复制所有将内容复制到单独的数组或指针中,然后在找到第一个空间时停止复制。这将确保 ret = "y" 被复制。找到空间后,使用 \0 终止符终止数组或指针。

然后您可以使用 strchr(3)查找 '=' 字符的位置,如果存在,则将其后面的值分配给另一个变量。该变量将包含等号后面的值。

这是一个例子:

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

int main(void) {
const char string[] = "ret=\"y\" err=\"000\"";
const char *key = "ret";
const char equals = '=', space = ' ', quote = '"';
char *start, *copy, *next, *value;
size_t i;

start = strstr(string, key);
if (start != NULL) {
copy = strdup(start);
if (copy == NULL) {
fprintf(stderr, "Failed to copy contents of string\n");
exit(EXIT_FAILURE);
}
for (i = 0; start[i] != space && start[i] != '\0'; i++) {
copy[i] = start[i];
}
copy[i] = '\0';

next = strchr(copy, equals);
if (next != NULL) {
next++;
if (*next == quote) {
next++;
next[strlen(next)-1] = '\0';
value = next;
}
}

printf("%s = %s\n", key, value);

free(copy);
}

return 0;
}

关于c - 如何获取存储在双引号内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42504219/

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