如何使用 C 语言将 + 添加为字符串?

How can I add a + as a String using C Language?

我正在尝试使用 for 循环生成 1-5 的数字并显示它们的总和。我的目标是输出如下所示:

1 + 2 + 3 + 4 + 5 = 15

但是,我得到了输出:

+ 1 + 2 + 3 + 4 + 5 = 15

    #include <stdio.h>

    void main()
    {   
        int a, sum = 0;
        for (a = 1; a <= 5; a++) 
        { 
            printf("+\t%d\t",a);
            sum = sum + a;
        }
        printf("=\t%d", sum);       
    }

每当输出由某个值分隔的列表时,都会经常遇到这种情况。问题是您有 5 个值要输出,但只有 4 个分隔符。如果您不做任何特别的事情,那么您将输出 5 个分隔符,这正是您的示例中发生的情况。即使您将分隔符移动到 您的值,您仍然会有一个太多。

我更喜欢这样做的方式是:

for (a = 1; a <= 5; ++a)
{
    if (a > 1) printf("\t+\t");
    printf("%d", a);
    sum += a;
}

与在循环外输出一些值相比,我更喜欢这种方法的原因是,您输出的内容通常更复杂,可能涉及额外的计算或函数调用,而且我不喜欢重复该代码.

所以,如果我知道我将要输出另一个东西,我只会输出一个分隔符。这意味着,为除第一次之外的每个循环迭代输出一个分隔符。

我也喜欢使用前缀样式,因为循环中第一项的条件通常比最后一项的条件简单。它还与涉及标志的不同方法兼容:

int first = 1;
for (a = 1; a <= 5; ++a)
{
    if (!first) printf("\t+\t");
    first = 0;
    printf("%d", a);
    sum += a;
}

还有许多其他方式可以让您看到这种模式发生。并且可能有各种形式的优化它会降低可读性。但这种方法简单易行。

您可以采用 char 类型的指针并为其分配一个空字符串作为第一次迭代的分隔符,并在打印第一个数字后将分隔符字符串分配给您要在两个之间打印的指针进一步迭代中的数字。

实施:

#include <stdio.h>

int main (void) {   
    int a, sum = 0;
    char * str = "";

    for (a = 1; a <= 5; a++) { 
        printf("%s%d\t", str, a);
        sum = sum + a;
        str = "+\t";
    }

    printf("=\t%d\n", sum);       
    return 0;
}

输出:

# ./a.out
1   +   2   +   3   +   4   +   5   =   15

补充:

  • 使用 void 作为 return 类型的 main() 函数不符合标准。 main()函数的return类型应该是int.