使用字符串方法在 C 中的 fizzbuzz 中出错?

errors in fizzbuzz in C using String approach?

所以我尝试使用字符串方法来改进代码来解决各种语言的 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=="[=10=]")
            strcat(output,i);

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

谢谢。

@Ashwini 辛格

你的代码有一些错误,

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

2) 您将整数值 i 与字符 output 连接起来,例如 strcat(output,i) 。我们需要首先将整数值 i 类型转换为 char/string 数据类型,然后与 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, '[=10=]'};
    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