typedef struct fred {
char mytype[41];
char* myremark;
} fred_t;
使用该结构的实例
fred_t* mystruct;
我可以打印mytype
fprintf (stdout, "%s\n", mystruct->mytype);
但我没有得到以类似方式打印myremark的语法。
(这是我正在修改的旧代码。)
答案 0 :(得分:1)
myremark
只是一个指针。它并没有指向任何东西,从它的外观来看,它也没有被初始化,所以你只是得到一些随机的内存块。
mytype
已分配存储空间(准确地说是41个字节),因此您可以获得所需的结果。 myremark
没有任何意义。
答案 1 :(得分:1)
如果实例已正确初始化(即myremark
指向有效字符串),则可以完全相同的方式打印它。
顺便说一下,要将字符串打印到stdout
,您只需使用puts
:
puts(mystruct->mytype);
puts(mystruct->myremark);
答案 2 :(得分:0)
fprintf (stdout, "%s\n", mystruct->myremark);
答案 3 :(得分:0)
fprintf (stdout, "%s\n", mystruct->myremark);
正确地以NULL结尾,则 myremark
应该有效。
答案 4 :(得分:0)
您可以像使用数组一样使用%s修饰符。我想知道你是否曾初始化myremark
指向一个有效的字符串。
答案 5 :(得分:0)
我正在接口的API正在记录中。每个电话都是简单记录的,但是关于eveything如何挂起的指导很少。有一小部分示例代码。最后,我通过搜索“vector”(不要问)在一个不相关的示例代码中找到了一个类似的例子。有一个两阶段的过程,第一阶段确定了结构的实例,但是char *指针所指向的内存直到第二次API调用引用已经识别的结构之后才被填充(效率只是得到了用户的内容)想要 - 这比我提出的简化插图要大得多。我错过了第二次电话会议。
几乎每个回答的人都会询问指针是否指向实际的字符串。他们没事,无论我如何改变我的语法,在第二次电话之后都找不到任何东西。感谢所有回复的人