求助一个简单的问题
#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);
}
就是我特别标注那一行,如果添加上可以运行是正确的,但是如果加上就编译不通过,这是为什么啊?
最后一句话打出病句了,是 不加那句printf就可以正确运行,加上就编译不通过 你能给全代码么,我用c-free都是可以运行的啊 elvo 发表于 2014-4-29 11:18 static/image/common/back.gif
你能给全代码么,我用c-free都是可以运行的啊
我这就是全代码了,你可以把那函数名换成MAIN。
我用的是VS2008,我也不明白问题在哪儿。。。 panchaoxz 发表于 2014-4-29 11:10 static/image/common/back.gif
最后一句话打出病句了,是 不加那句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
这些是编译出错提示 报的是什么错,能贴出来么 把char *c1改成char c1[]就好了 我没有vs2008,又用了vs2010,都是没有保错的,但就你给报错信息,应该是那句printf没有加;但是你给的又是有分号的。。
恩,爱莫能助了,只有围观大神解答了 wjc2118 发表于 2014-4-29 11:47 static/image/common/back.gif
把char *c1改成char c1[]就好了
同样报错,虽然不是报错有区别了。。。
问题是,我不加那printf就没问题啊,那个printf,到底影响了什么? panchaoxz 发表于 2014-4-29 15:18 static/image/common/back.gif
同样报错,虽然不是报错有区别了。。。
问题是,我不加那printf就没问题啊,那个printf,到底影响了什 ...
我复制到code blocks 上看的,没有报错,只是我说的那个地方有个警告 wjc2118 发表于 2014-4-29 15:35 static/image/common/back.gif
我复制到code blocks 上看的,没有报错,只是我说的那个地方有个警告
看两位仁兄的回复,我的程序应该是没有问题的。难道是我的VS2008的问题。。。 不会只能帮顶起 #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语言中,类型声明必须放在开头的,你把声明放中间肯定报错 我直接运行了,能编译运行但是有警告,说是string类型转换成了char *类型,但是结果没有问题 pro-serv 发表于 2014-4-29 19:40 static/image/common/back.gif
这样就没问题了,C语言中,类型声明必须放在开头的,你把声明放中间肯定报错
恩,确实是这个问题,昨天晚上我自己也试了。
但是在我朋友那儿试,用相同的代码,用VS2008也能通过。。。不晓得为什么 天使之约 发表于 2014-4-29 20:33 static/image/common/back.gif
我直接运行了,能编译运行但是有警告,说是string类型转换成了char *类型,但是结果没有问题
14楼的解答是对的,貌似是通过C++编译是没问题的,但是用C编译就不可以 本帖最后由 oggplay 于 2014-4-30 20:31 编辑
一切正常,连警告都没有,检查你的编译环境
这个你真的感谢我了,我找到了资料了
这个是C99标准,说明你的编译器不支持C99标准
14楼正解:lol: 学习了,,,,,,,,,,,, panchaoxz 发表于 2014-4-30 10:36 static/image/common/back.gif
14楼的解答是对的,貌似是通过C++编译是没问题的,但是用C编译就不可以
对于那个警告c编译器不允许
页:
[1]
2