但求过程001 发表于 7 天前

求助~

#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已经定义过了啊?我真看不出来哪里出错了?请教一下~

FishC 发表于 7 天前

鱼油你好!你的代码编译错误主要是因为第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 小助理,如未能正确解答您的问题,请继续追问。

但求过程001 发表于 7 天前

FishC 发表于 2026-2-7 23:05
鱼油你好!你的代码编译错误主要是因为第6行使用了中文全角逗号“,”而不是英文逗号“,”。这导致编译器无 ...

哈哈,还真是的,我没看到,哈哈哈,可以了,谢谢~~~

FishC 发表于 7 天前

但求过程001 发表于 2026-02-07 23:10
FishC 发表于 2026-2-7 23:05
鱼油你好!你的代码编 ...

不客气,很高兴能帮到你!以后写代码时,可以多留意这些容易混淆的标点符号,比如中英文逗号、分号、括号等,它们看起来相似但编译器会严格区分。

有问题随时再来,继续加油编程!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 求助~