求助~
#include <stdio.h>void main()
{
char a[]="Yo!Keep chasing your dreams!It's that simple...";
char b,*p1,*p2;
int i;
p1=a;
p2=b;
for(;*p1!='\0';)
{
*p2++=*p1++;
}
*p2='\0';
printf("array a is:%s\n",a);
printf("array b is:");
for(i=0;b!='\0';i++)
{
printf("%c",b);
}
printf("\n\n");
}
以上程序是a字符数组里面的内容复制到b字符数组里面,为什么我编译时报错“error C2065: 'i' : undeclared identifier”,我的i已经定义过了啊?我真看不出来哪里出错了?请教一下~ 鱼油你好!你的代码编译错误主要是因为第6行使用了中文全角逗号“,”而不是英文逗号“,”。这导致编译器无法正确解析变量声明,从而误认为变量 i 未定义。
此外,代码中还有一些其他问题需要修正:
[*] main 函数应返回 int 类型,而非 void。
[*] 字符数组 a 应声明为数组形式,以便存储字符串。
[*] b 需要声明为足够大的字符数组来接收复制的字符串。
[*] 打印数组 b 时,循环条件应使用 b != '\0'。
以下是修正后的代码:
#include <stdio.h>
int main()
{
char a[] = "Yo!Keep chasing your dreams!It's that simple...";
char b;// 确保数组足够大
char *p1, *p2;// 这里使用英文逗号
int i;
p1 = a;
p2 = b;
for(; *p1 != '\0';)
{
*p2++ = *p1++;
}
*p2 = '\0';
printf("array a is: %s\n", a);
printf("array b is: %s\n", b);
// 或者使用循环逐个字符打印
printf("array b is: ");
for(i = 0; b != '\0'; i++)
{
printf("%c", b);
}
printf("\n\n");
return 0;
}
主要修改点:
[*] 将中文逗号改为英文逗号。
[*] a 改为字符数组,b 声明为长度为100的字符数组。
[*] main 函数返回类型改为 int,并添加 return 0。
[*] 打印 b 时,直接使用 %s 或修正循环条件。
这样修改后,程序就能正确编译运行了。如果还有问题,请随时追问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2026-2-7 23:05
鱼油你好!你的代码编译错误主要是因为第6行使用了中文全角逗号“,”而不是英文逗号“,”。这导致编译器无 ...
哈哈,还真是的,我没看到,哈哈哈,可以了,谢谢~~~ 但求过程001 发表于 2026-02-07 23:10
FishC 发表于 2026-2-7 23:05
鱼油你好!你的代码编 ...
不客气,很高兴能帮到你!以后写代码时,可以多留意这些容易混淆的标点符号,比如中英文逗号、分号、括号等,它们看起来相似但编译器会严格区分。
有问题随时再来,继续加油编程!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]