【问题标题】:errors in fizzbuzz in C using String approach?使用字符串方法在 C 中的 fizzbuzz 中出现错误?
【发布时间】:2018-09-23 06:45:46
【问题描述】:

所以我尝试使用字符串方法来解决各种语言的 FizzBu​​zz 挑战以改进代码。我被困在 C 中,因为这里的工作方式不同。 这是我的代码,我遇到了错误,任何人都可以向我解释并帮助获得正确的代码。

#include<stdio.h>
#include<string.h>
int main()
{
    int i,n;
    char output;
    printf("Enter Range: ");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        if(i%3==0)
            strcat(output,"Fizz");
        if(i%5==0)
            strcat(output,"Buzz");
        if(output=="\0")
            strcat(output,i);

        printf("\ni");
    }
    printf("\nEnd.\n");
    return 0;
}

谢谢。

【问题讨论】:

  • 你遇到了什么错误?
  • output 是 char 即一个字符,而不是字符串。你的 strcat 调用都不好。你应该回到一本关于字符串和打印的好 C 书或教程,你的一个 printfs 也是可疑的。
  • 您的编译器在完全启用时应该警告char output; ... strcat(output,"Fizz");。你用的是什么编译器?
  • GCC。错误:FizzBu​​zz_Modified.c:16:18: 警告:与字符串文字比较的结果未指定(使用 strncmp 代替)[-Wstring-compare] if(output=="\0") ^ ~~~~ FizzBu​​zz_Modified.c :17:27:警告:不兼容的整数到指针转换将“int”传递给“const char *”类型的参数 [-Wint-conversion] strcat(output,i); ^ /usr/include/secure/_string.h:131:33: 注意:扩展自宏 'strcat' builtin___strcat_chk (dest, __VA_ARGS, __darwin_obsz (dest)) ^~~~~~~~ ~~~
  • 在修复警告之前不要尝试运行此代码。您需要将字符数组的地址传递给strcat。你不是。因此,声明一个数组并传递它。查看strcat 的手册页,并修正你的论点。

标签: c c-strings fizzbuzz


【解决方案1】:

@Ashwini 辛格

你的代码有一些错误,

1) 您将 output 变量声明为 char 数据类型并在 char 中的 Fizz/Buzz 中连接字符串。那么如何将字符串的值(这是一个字符数组)放在字符output中。

2) 您将整数值 i 与字符 output 连接起来,例如 strcat(output,i) 。我们需要先将整数值i 转换为字符/字符串数据类型,然后与output 连接。

FizzBu​​zz 程序的条件是,

1) 如果数字是 3 的倍数,则在结果字符串中添加 Fizz

2) 如果数字是 5 的倍数,则在结果字符串中添加 Buzz

3) 如果数字既不是 3 的倍数也不是 5 的倍数,则在结果字符串中添加数字

代码:

#include<stdio.h>
#include<string.h>
int main()
{
int i,n;
char output[100]=" ";
printf("Enter Range: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
    char s[] = {'0' + i, '\0'};
    if(i%3==0)
        strcat(output,"Fizz ");
    else if(i%5==0)
        strcat(output,"Buzz ");
    else
        strcat(strcat(output,s)," ");
}
puts(output);
return 0;
}

输出:

Enter Range: 10                                                                  
 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 2019-05-10
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多