C 我正试图打印出电话号码,但出现了一个错误

C 我正试图打印出电话号码,但出现了一个错误,c,arrays,C,Arrays,我只是想让你们都知道,我在编程方面很新,我想我只是错过了一些小东西,但我不知道它是什么。当我编译代码时,我得到了以下错误格式%d需要一个匹配的int参数[-Wformat=]。我试过很多东西。我尝试将所有函数类型设置为char,并将它们设置为int。我得到了类似的错误 char *phoneInput(void) { char phone[11]; printf("Input the politicians phone number with no spaces: ");

我只是想让你们都知道,我在编程方面很新,我想我只是错过了一些小东西,但我不知道它是什么。当我编译代码时,我得到了以下错误格式%d需要一个匹配的int参数[-Wformat=]。我试过很多东西。我尝试将所有函数类型设置为char,并将它们设置为int。我得到了类似的错误

char *phoneInput(void)
{
    char phone[11];

    printf("Input the politicians phone number with no spaces: ");
    fgets(phone, 10, stdin);
    return 0;
}

char  printPhone(char phone[11])
{
    printf("- Phone Number: (%d%d%d)%d%d%d-%d%d%d%d", phone[0], phone[1], phone[2], 
              phone[3], phone[5], phone[6], phone[7], phone[8], phone[9]);

    return 0;
}

printf语句还缺少一个参数。将phone[4]添加到您的printf中,如下所示

#include <iostream>

using namespace std;

char *phoneInput(void)
{
    char phone[11];

    printf("Input the politicians phone number with no spaces: ");
    fgets(phone, 10, stdin);
    return 0;
}

char  printPhone(char phone[11])
{
    printf("- Phone Number: (%d%d%d)%d%d%d-%d%d%d%d", phone[0], phone[1], phone[2],
              phone[3], phone[4], phone[5], phone[6], phone[7], phone[8], phone[9]);

    return 0;
}

但我不明白的是,为什么所有函数的返回类型都是char*或char,而实际上从这两个函数返回的都是0。

我建议您编写一些代码。phoneInput函数看起来非常可疑…请阅读相关内容,以及。最后,请学习如何创建一个显示给我们看。如果你读了单词,错误似乎很清楚**char**phone[11]和格式“%d”要求匹配的“int”参数应该是不言自明的。phone是phoneInput函数的本地函数。在该功能范围之外,它将不可见。您必须将电话声明为指针,并动态分配内存,然后从phoneInput函数返回电话指针。在函数printPhone中,函数规格应该是%c而不是%d。基本上,您的错误是因为您有10%ds,并且只有9个匹配参数。您能返回字符数组吗?@xing,啊,是的!抢手货我做了相应的编辑。@sarah,简短的回答是否定的。看。可以通过多种方式将值从函数中发送出去,但直接返回本地字符数组的地址是行不通的。@xing收到了,谢谢!