我是C的新手.以下代码中的字符串赋值有效:
#include<stdio.h>
int main(void){
char str[] = "string";
printf("%s\n",str);
}
Run Code Online (Sandbox Code Playgroud)
但是在下面不起作用,即使我给索引号name[]:
#include <stdio.h>
int main(void){
struct student {
char name[10];
int salary;
};
struct student a;
a.name[10] = "Markson";
a.salary = 100;
printf("the name is %s\n",a.name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
你不能做这个
a.name[10] = "Markson";
Run Code Online (Sandbox Code Playgroud)
你需要strcpy字符串"Markson"来a.name.
strcpy 宣言:
char * strcpy ( char * destination, const char * source );
Run Code Online (Sandbox Code Playgroud)
所以,你需要
strcpy( a.name, "Markson" );
Run Code Online (Sandbox Code Playgroud)
小智 5
您无法分配给阵列.两个解决方案:复制字符串:
strcpy(a.name, "Markson");
Run Code Online (Sandbox Code Playgroud)
或者使用const char指针而不是数组,然后你可以简单地分配它:
struct {
const char *name;
/* etc. */
};
a.name = "Markson";
Run Code Online (Sandbox Code Playgroud)
如果您希望稍后修改"name"的内容,请使用非const char指针:
struct {
char *name;
}
a.name = strdup("Markson");
Run Code Online (Sandbox Code Playgroud)
(在后一种情况下,不要忘记释放由strdup()分配的内存!)
| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |