删除c程序中的选项卡/空格

时间:2013-11-14 13:14:44

标签: c tabs spaces

我正在尝试阻止在每行输出的末尾打印一个尾随制表符。 我怎么能这样做?

其余的代码按照我需要的方式工作

#include <stdio.h>
int main()
{  
    int i, j, k, y, z, x, c, b, a, C;
    scanf("%d", &x);

    for(i=0; i<x; i++){
        for(j=0; j<x; j++){
            int c = 0;
            for(k=0; k<x; k++){

                y = (i+1)*(k+1);
                z = (j+k); 
                c = (z*y)+c;
            } 
            printf("%d\t", c);
        }
        printf("\n");
    }
}

2 个答案:

答案 0 :(得分:3)

\t\n分别是制表符和换行符,所以更改

printf("%d\t", c);

printf("%d", c);

删除标签,然后删除

printf("\n");
总而言之,要松开新线......容易 作为一个助手:为什么你宣布第二个int c?你的代码首先声明一堆int,其中一些是你不使用的:

int i, j, k, y, z, x, c, b, a, C;
                        //last 3 aren't used
                      //c declared here, though
//I'd write:
int i, j, k, y, z, x, c;

进一步向下:

//inside second loop:
int c = 0;
//would be better if wou wrote:
c = 0;

最后的注释:你错过了一个return语句,但你的main函数的签名表明(正确地)主函数应该返回一个int,而不是一个空格。
最后添加return 0;

如果您唯一想要避免打印的是 last \ n(和\ t),您可以更改:

printf("\n");

if (i < x-1) printf("\n");

每次都会打印\ n,但循环运行的 last 时间除外。只是因为循环的条件是i<x,并且打印换行的条件是i<x-1
就您的标签而言,替换:

 printf("%d\t", c);

使用:

if (j < x - 1) printf("%d\t", c);
else printf("%d", c);

完成你所需要的。
也就是说,由于x是一个常量值,因此将x-1分配给其中一个未使用但已声明的整数可能更好:

scanf("%d", &x);
a = x -1;

然后,由于您正在检查何时使用此代码打印行的最后一个数字:

if (j < a) printf("%d\t", c);//replaced x - 1 with a here
else printf("%d", c);

您可以放心地假设else子句仅适用于每行的最后一个数字,那么为什么不在那里添加换行符呢?

if (j < a) printf("%d\t", c);//replaced x - 1 with a here
else printf("%d\n", c);

总的来说,这会留下以下代码:

#include <stdio.h>
int main()
{  
    int i, j, k, y, z, x, c, a;
    scanf("%d", &x);
    a = x - 1;
    i = 0;
    for(i=0; i<x; i++){
        for(j=0; j<x; j++){
            c = 0;
            for(k=0; k<x; k++){
                y = (i+1)*(k+1);
                z = (j+k); 
                c = (z*y)+c;
            } 
            if (j < a) printf("%d\t", c);
            else printf("%d\n", c);
        }
    }
    return 0;//ADD A RETURN STATEMENT!!
}

这仍然会在最后一行输出后添加一个新行。要删除它,只需写:

if (j < a) printf("%d\t", c);
else if (i < a) printf("%d\n", c);//check if we're in the last i-loop
else printf("%d", c);//if so, don't print new line

已完成工作......我已尝试使用此代码and you can see the output on this codepad

答案 1 :(得分:1)

\t表示标签,\n表示新行。这些被称为escape sequences