如何将指针引用的值存储在变量中?
How to store value referenced with pointers in variables?
实际上我有一个看起来像这样的字符串:"1,22,333,,55555,666666,7777777"
根据这个字符串,我创建了两个数组:
- 每个参数的大小。对于给定的示例,它看起来像这样:
[1;2;3;0;5;6;7]
- 第二个是指向每个参数开头的指针。
对于给定的例子,它看起来像这样:
["1,22,333,,55555,666666,7777777";
"22,333,,55555,666666,7777777";
"333,,55555,666666,7777777";
",55555,666666,7777777";
"55555,666666,7777777";
"666666,7777777";
"7777777"]
参数可以改变长度和类型但不能改变顺序。
所以我想为那些关心的人使用类型转换来存储它们
我已经测试了 sscanf
指针数组的每个索引,但它似乎不起作用
char* format = strcat(strcat("%", params_sizes[0]), "u");
strutest.un = sscanf(params_pointer[0], format);
你有什么想法可以帮助我吗?
这一行
char* format = strcat(strcat("%", params_sizes[0]), "u");
错了。
strcat
的原型是
char *strcat(char *restrict dest, const char *restrict src);
其中 dest
是 目标 ,即(指向)存储连接字符串的对象。
所以看看你的代码:
strcat("%", params_sizes[0]
^^^
dest !!!
您正在尝试将结果存储在字符串文字中。那行不通(修改未定义行为中的字符串文字)。
你需要这样的东西:
char format[1024] = "%"; // Sufficiently big char array that can be modified
strcat(strcat(format, params_sizes[0]), "u");
顺便说一句:还要考虑 sprintf
而不是嵌套 strcat
实际上我有一个看起来像这样的字符串:"1,22,333,,55555,666666,7777777"
根据这个字符串,我创建了两个数组:
- 每个参数的大小。对于给定的示例,它看起来像这样:
[1;2;3;0;5;6;7]
- 第二个是指向每个参数开头的指针。 对于给定的例子,它看起来像这样:
["1,22,333,,55555,666666,7777777";
"22,333,,55555,666666,7777777";
"333,,55555,666666,7777777";
",55555,666666,7777777";
"55555,666666,7777777";
"666666,7777777";
"7777777"]
参数可以改变长度和类型但不能改变顺序。 所以我想为那些关心的人使用类型转换来存储它们
我已经测试了 sscanf
指针数组的每个索引,但它似乎不起作用
char* format = strcat(strcat("%", params_sizes[0]), "u");
strutest.un = sscanf(params_pointer[0], format);
你有什么想法可以帮助我吗?
这一行
char* format = strcat(strcat("%", params_sizes[0]), "u");
错了。
strcat
的原型是
char *strcat(char *restrict dest, const char *restrict src);
其中 dest
是 目标 ,即(指向)存储连接字符串的对象。
所以看看你的代码:
strcat("%", params_sizes[0]
^^^
dest !!!
您正在尝试将结果存储在字符串文字中。那行不通(修改未定义行为中的字符串文字)。
你需要这样的东西:
char format[1024] = "%"; // Sufficiently big char array that can be modified
strcat(strcat(format, params_sizes[0]), "u");
顺便说一句:还要考虑 sprintf
而不是嵌套 strcat