我的代码使用的是整数值,但是当我尝试添加字符值时,我就有错误。
这是我的代码:
1 #include <stdio.h>
2
3 struct _pointer{
4
5 int x;
6 int y;
7 char Q[200];
8
9 }address,*pointer;
10
11
12 main()
13 {
14 pointer = &address; // here we give the pointer the address.
15 pointer->x = 10; // here we give the pointer the value to variable x.
16 pointer->y = 30; // here we give the pointer the value to variable y.
17 (*pointer).Q = "BANGO!";
18 printf("The x variable is %d\nThe y variable is %d\nTheText\n",pointer-> x,pointer->y,pointer->Q);
19
20 }
21
那我的错误在哪里?
由于
答案 0 :(得分:2)
复制字符串由strcpy(char *dst, const char *src)
像这样复制字符串
strcpy(pointer->Q,"BANGO!");
答案 1 :(得分:2)
您已将pointer->Q
传递给printf
,但格式字符串中没有%s
。
此外,您还应该使用strcpy(pointer->Q, "mystring");
答案 2 :(得分:1)
我可以看到一些错误,最重要的一个是你不能在c中分配数组,把数组的内容设置为你需要复制内容的那些字符串,你可以使用strcpy()
为此,在您的情况下,您需要
strcpy((*pointer).Q, "BANGO!");
另外,你的其余代码似乎不是一个好主意,我推荐这个
#include <stdio.h>
#include <string.h>
struct MyStruct
{
int x;
int y;
char Q[200];
};
int
main()
{
struct MyStruct instance;
struct MyStruct *pointer;
pointer = &instance;
pointer->x = 10; // here we give the pointer the value to variable x.
pointer->y = 30; // here we give the pointer the value to variable y.
/* copy the contents of "BANGO!" into the array Q */
strcpy(pointer->Q, "BANGO!");
printf("x = %d\ny = %d\nQ = %s\n", pointer->x, pointer->y, pointer->Q);
/* ^ you need this for ---------------^ this */
/* or even */
printf("x = %d\ny = %d\nQ = %s\n", instance.x, instance.y, instance.Q);
/* which will print the same, since you modified it through the pointer */
return 0;
}
您还应注意,main()
会返回int
。
在一般情况下没有充分理由使用全局变量,有些情况下需要或有用,但一般情况下应避免使用它们。< / p>
答案 3 :(得分:1)
在我看来,你甚至没有尝试编译代码。
首先,您不能只为char[]
分配一个字符串,而需要使用strcpy(char *to, char *from);
。
然后,您有printf
的三个参数,但只有两个格式%
。
正确的方式:
printf("The x variable is %d\nThe y variable is %d\nTheText variable is %s\n",pointer->x,pointer->y,pointer->Q);
和
strcpy(pointer->Q,"Your text");
答案 4 :(得分:0)
我建议使用
strlcpy(pointer->Q,"BANGO!",sizeof(pointer->Q));
不易出错,并保证字符串无效终止。