司空曙 发表于 2018-2-15 23:01:00

学字符串拷贝一章有疑问

本帖最后由 司空曙 于 2018-2-16 20:26 编辑

新年好!今晚在看小甲鱼的C语言字符串处理(SIE19),里面说到字符串拷贝不能用赋值,但是我以下的代码在vs2012中可以成功编译并运行
代码如下:

lyjlyj 发表于 2018-2-16 08:47:56

本帖最后由 lyjlyj 于 2018-2-16 17:31 编辑

你这代码什么意思,str是一个常量,str2也是一个常量,不能赋值,编译不通过
我没有vs2010,你把运行的截图发出来

lyjlyj 发表于 2018-2-16 08:48:36

代码呢

司空曙 发表于 2018-2-16 16:55:13

lyjlyj 发表于 2018-2-16 08:48
代码呢

已添加代码。

司空曙 发表于 2018-2-16 17:03:10

lyjlyj 发表于 2018-2-16 08:48
代码呢

已添加代码

人造人 发表于 2018-2-16 18:50:58

1>------ 已启动全部重新生成: 项目: tmp, 配置: Debug Win32 ------
1>main.c
1>c:\visualstudioprojects\tmp\tmp\main.c(10): error C2106: “=”: 左操作数必须为左值
1>已完成生成项目“tmp.vcxproj”的操作 - 失败。
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========

司空曙 发表于 2018-2-16 20:27:39

lyjlyj 发表于 2018-2-16 08:47
你这代码什么意思,str是一个常量,str2也是一个常量,不能赋值,编译不通过
我没有vs2010,你把运行的截 ...

我直接把代码截图发过来了。不知道为何浏览器会把str2=str 的 给弄没了

司空曙 发表于 2018-2-16 20:28:30

人造人 发表于 2018-2-16 18:50


谢谢。我已经把我的代码重新贴出来了。在我的vs2012编译以及运行都是没问题的

人造人 发表于 2018-2-16 21:13:21

字符串拷贝不能用赋值,指的是这个

#include <stdio.h>

int main(void)
{

        char str[] = "I Love FishC.com!";
        char *str2;

        str2 = str;
        printf("%s\n", str2);

        str = ' ';
        printf("%s\n", str2);

        return 0;
}


I Love FishC.com!
Love FishC.com!
请按任意键继续. . .

lyjlyj 发表于 2018-2-16 21:28:40

司空曙 发表于 2018-2-16 20:28
谢谢。我已经把我的代码重新贴出来了。在我的vs2012编译以及运行都是没问题的


你这里是单个赋值是可以的,相当于str2=str这样的赋值,
你所说的字符串拷贝应该是直接str2 = str这样的赋值,是错误的
初始化str2的时候,一般是str2={0},0对应的ascii是‘\0'
页: [1]
查看完整版本: 学字符串拷贝一章有疑问