c - 数组中同一 printf() 函数中的“\t”字符空间差异

标签 c arrays tabs whitespace

我编写了这段 C 代码,并在 Windows 8.1 中的 GNU GCC 和 TURBO C 编译器中进行了编译。该代码具有大小为 20 的 float 组,并使用 for 循环打印该数组,并将“\t”字符放入 printf() 函数中以用于间隔目的。 在 20 次的整个循环中,'\t' 应该打印相等的空格,但它只为 a[i] 0 到 10 的值打印 2 个空格,并且在剩余执行中打印常规空格。 我不明白为什么会发生这种情况。这是由于我在打印 float 变量后使用而发生的吗?

代码C代码如下所示:

#define n 20

    int main()
    {
        float a[n]={0.1,0.9,0.23,0.8,0.32,0.57,0.4,0.14,0.25,0.11,0.7,0.86,0.75,0.19,                    0.55,0.95,0.34,0.29,0.64,0.45},ex,temp,x;
        int i,idx;
        system("cls");

        /*for(i=0 ; i<n ; i++)
        {
            printf("a[%d]: %f\t",i,a[i]);
        }*/

        for(i=0 ; i<n ; i++)
        {
            x=a[i];
            idx=a[i]*10;

            printf("\na[%d]: %f \t idx: %d",i,a[i],idx);
            //printf("\na[%d]: %f *\t idx: %d",i,a[i],idx);
        }

        getch();
        return 0;
    }

O/p的图片如下:

enter image description here

根据图像中所示的 o/p,红线区域的空间小于蓝线区域。这怎么可能?这是什么原因呢?

最佳答案

\t 只是一个字符。你的终端将决定如何处理它,通常这意味着“移动到下一个制表位位置”,一个常见的约定是每 8 列有一个这样的位置。您无法在程序中控制终端将用它做什么。

如果您想控制输出格式,请改用 printf() 提供的功能。转换允许指定字段宽度和精度,使用它们,请参见此处的示例:http://www.cprogramming.com/tutorial/printf-format-strings.html

关于c - 数组中同一 printf() 函数中的“\t”字符空间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31242304/

相关文章:

c++ - 具有静态 char* 数组成员的模板特化,多个单元的实例化

Java int[][] 数组 - 迭代和查找值

c - 定点转换 : 31. ..24 指数与 23...0 小数到 Q25 值?

c - malloc 何时在裸机环境中返回 NULL?

c++ - 在 C11/C++11 中,可以在同一内存上混合原子/非原子操作吗?

android - 在选项卡内激活相机(android)

ebay 的 CSS 标签位置

c++ - 测量大型方形网格中的簇有哪些好的替代方法?

Java string.split() 抛出 ArrayIndexOutOfBoundsException

javascript - AngularJS - 通过 Controller 有条件地路由时在新选项卡中打开链接