【发布时间】:2020-03-23 13:04:40
【问题描述】:
通常在 C 中,您可以指向字符串的特定字符来获取子字符串。示例:
char string[10];
strcpy(string, "foo bar");
char *substring = &string[4];
// string = "foo bar"
// substring = "bar"
但是当你处理结构指针时,语法是什么?我以为会是这样,但它返回垃圾数据:
struct line
{
char string[10];
char substring[10];
};
void some_function(struct line *txt)
{
*(txt->substring) = &(txt->string[4]);
}
int main()
{
struct line text;
strcpy(text.string, "foo bar");
some_function(&text);
printf("\n-%s-\n", text.string);
printf("\n-%s-", text.substring); // returns garbage data
return 0;
}
【问题讨论】:
-
*txt->substring不是指针,它是一个字符,所以它不能被分配一个指针值。
标签: c pointers struct c-strings