我把c定义为
char c[][10]
Run Code Online (Sandbox Code Playgroud)
在函数定义中使用它 c[i]="gray";
怎么了?我在网上搜索,它显示相同的语法.
谢谢.
asc*_*ler 11
您不能=在数组上使用assignment().如果您更改c为指针数组,那可能会有效,具体取决于您需要执行的操作.
const char *c[20];
c[i] = "gray";
Run Code Online (Sandbox Code Playgroud)
或者,如果声明的类型必须是数组数组,您可以使用strncpy:
char c[20][10];
strncpy(c[i], "gray", sizeof(c[i]));
Run Code Online (Sandbox Code Playgroud)
Ada*_*eld 11
问题是数组不能在C中赋值.字符串常量就像"gray"是字符数组常量:在这种情况下,类型是char[5](4 + 1表示终止空值).
如果您知道目标数组足以容纳所需的字符串,则可以使用strcpy这样复制字符串:
// Make sure you know that c[i] is big enough!
strcpy(c[i], "gray");
Run Code Online (Sandbox Code Playgroud)
更好的想法是使用更安全的功能,例如strlcpy(基于BSD的系统和Mac OS X)或strcpy_s(Windows):
strlcpy(c[i], "gray", 10); // 10 is the size of c[i]
Run Code Online (Sandbox Code Playgroud)
但是,这些功能是特定于平台的,并非所有便携式功能.如果速度不是问题,您也可以推出自己的实现:
size_t strlcpy(char *dst, const char *src, size_t size)
{
size_t len = 0;
while(size > 1 && *src)
{
*dst++ = *src++;
size--;
len++;
}
if(size > 0)
*dst = 0;
return len + strlen(src);
}
Run Code Online (Sandbox Code Playgroud)
千万不能使用strncpy,因为它可能会留下一个非空结尾的字符串
| 归档时间: |
|
| 查看次数: |
49409 次 |
| 最近记录: |