鱼C论坛

 找回密码
 立即注册
查看: 2588|回复: 22

求助一个简单的问题

[复制链接]
发表于 2014-4-29 11:07:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

void copyChar(){
        char *c1 = "I am a student";
        char c2[] = "I am a teacher!!!";

        printf("\nString c2 = %s\nString c1 = %s\nString",c2,c1);

        char *to = c2;
        char *from = c1;
        while(*from != '\0'){
                *to = *from;
                from++;
                to++;
        }

        printf("\nString c2 = %s\nString c1 = %s\nString",c2,c1);
}

就是我特别标注那一行,如果添加上可以运行是正确的,但是如果加上就编译不通过,这是为什么啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-4-29 11:10:38 | 显示全部楼层
最后一句话打出病句了,是 不加那句printf就可以正确运行,加上就编译不通过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-29 11:18:52 | 显示全部楼层
你能给全代码么,我用c-free都是可以运行的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-29 11:28:50 | 显示全部楼层

我这就是全代码了,你可以把那函数名换成MAIN。
我用的是VS2008,我也不明白问题在哪儿。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-29 11:29:35 | 显示全部楼层
panchaoxz 发表于 2014-4-29 11:10
最后一句话打出病句了,是 不加那句printf就可以正确运行,加上就编译不通过

>e:\vcproject\testpointer\testpointer\copychar.c(9) : error C2143: syntax error : missing ';' before 'type'
1>e:\vcproject\testpointer\testpointer\copychar.c(10) : error C2143: syntax error : missing ';' before 'type'
1>e:\vcproject\testpointer\testpointer\copychar.c(11) : error C2065: 'from' : undeclared identifier
1>e:\vcproject\testpointer\testpointer\copychar.c(11) : error C2100: illegal indirection
1>e:\vcproject\testpointer\testpointer\copychar.c(12) : error C2065: 'to' : undeclared identifier
1>e:\vcproject\testpointer\testpointer\copychar.c(12) : error C2100: illegal indirection
1>e:\vcproject\testpointer\testpointer\copychar.c(12) : error C2065: 'from' : undeclared identifier
1>e:\vcproject\testpointer\testpointer\copychar.c(12) : error C2100: illegal indirection
1>e:\vcproject\testpointer\testpointer\copychar.c(13) : error C2065: 'from' : undeclared identifier
1>e:\vcproject\testpointer\testpointer\copychar.c(14) : error C2065: 'to' : undeclared identifier

这些是编译出错提示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-29 11:30:46 | 显示全部楼层
报的是什么错,能贴出来么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-29 11:47:23 | 显示全部楼层
把char *c1改成char c1[]就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-29 11:47:38 | 显示全部楼层
我没有vs2008,又用了vs2010,都是没有保错的,但就你给报错信息,应该是那句printf没有加;但是你给的又是有分号的。。
恩,爱莫能助了,只有围观大神解答了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-29 15:18:55 | 显示全部楼层
wjc2118 发表于 2014-4-29 11:47
把char *c1改成char c1[]就好了

同样报错,虽然不是报错有区别了。。。

问题是,我不加那printf就没问题啊,那个printf,到底影响了什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-29 15:35:15 | 显示全部楼层
panchaoxz 发表于 2014-4-29 15:18
同样报错,虽然不是报错有区别了。。。

问题是,我不加那printf就没问题啊,那个printf,到底影响了什 ...

我复制到code blocks 上看的,没有报错,只是我说的那个地方有个警告
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-29 15:55:47 | 显示全部楼层
wjc2118 发表于 2014-4-29 15:35
我复制到code blocks 上看的,没有报错,只是我说的那个地方有个警告

看两位仁兄的回复,我的程序应该是没有问题的。难道是我的VS2008的问题。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-29 18:56:53 | 显示全部楼层
不会  只能帮顶起            
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-29 19:40:08 | 显示全部楼层
#include <stdio.h>

main()
{
        char *c1 = "I am a student";
        char c2[] = "I am a teacher!!!";
                char *to = c2;
        char *from = c1;

        printf("\nString c2 = %s\nString c1 = %s\nString",c2,c1);

        
        while(*from != '\0')
                {
                *to = *from;
                from++;
                to++;
        }

        printf("\nString c2 = %s\nString c1 = %s\nString",c2,c1);
}
这样就没问题了,C语言中,类型声明必须放在开头的,你把声明放中间肯定报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-29 20:33:31 | 显示全部楼层
我直接运行了,能编译运行但是有警告,说是string类型转换成了char *类型,但是结果没有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-30 10:32:59 | 显示全部楼层
pro-serv 发表于 2014-4-29 19:40
这样就没问题了,C语言中,类型声明必须放在开头的,你把声明放中间肯定报错

恩,确实是这个问题,昨天晚上我自己也试了。
但是在我朋友那儿试,用相同的代码,用VS2008也能通过。。。不晓得为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-30 10:36:20 | 显示全部楼层
天使之约 发表于 2014-4-29 20:33
我直接运行了,能编译运行但是有警告,说是string类型转换成了char *类型,但是结果没有问题

14楼的解答是对的,貌似是通过C++编译是没问题的,但是用C编译就不可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-30 11:00:34 | 显示全部楼层
本帖最后由 oggplay 于 2014-4-30 20:31 编辑

一切正常,连警告都没有,检查你的编译环境
抓图26.png


这个你真的感谢我了,我找到了资料了

这个是C99标准,说明你的编译器不支持C99标准

15.png

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-30 11:23:29 | 显示全部楼层
14楼正解:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-30 14:49:52 | 显示全部楼层
学习了,,,,,,,,,,,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-30 15:03:41 | 显示全部楼层
panchaoxz 发表于 2014-4-30 10:36
14楼的解答是对的,貌似是通过C++编译是没问题的,但是用C编译就不可以

对于那个警告c编译器不允许
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 05:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表