我的代码如下所示:
char source[] = "the wrong son";
char output[80];
int i, j = 0;
for ( i = 0; source[i]; i++ )
if ( i < 4 || i >= 10 )
output[j++] = source[i];
output[j] = '\0';
为什么我不能用这样的其他字符串替换字符串:
source = output;
而不是更长的方式:
for ( i = 0; output[i]; i++)
source[i] = output[i];
source[i] = '\0';
当我尝试source = output;
时,没有任何反应。怎么样?
答案 0 :(得分:1)
在C string
中不被视为原始数据类型。因此,您的陈述不合适!
如果字符串是独立的和原始的数据类型,你可以轻松地完成它。但是,这是受限制的并且违反C语言规范。
你必须经历第一条路!或者,您也可以使用strcpy()
方法。
答案 1 :(得分:0)
来自C标准ISO / IEC 9899:201x:
lvalue是一个潜在的表达式(对象类型不是void) 指定一个对象; 64)如果左值在评估时没有指定对象,则行为未定义。当一个对象被称为具有特定类型时,类型是 由用于指定对象的左值指定。可修改的左值是一个左值 没有数组类型,没有不完整的类型,没有const- 合格的类型,如果是结构或联合,则没有任何成员(包括, 递归地,所有包含聚合或联合的任何成员或元素) 合格的类型。
数组是一个不可修改的左值对象。