文本对齐C语言

文本对齐C语言,c,text,alignment,C,Text,Alignment,我必须解决一个涉及左对齐字符串长度和前导零的问题 我有下表: 开始 接近 连接 删除 结束 初始化 印刷品 写 这是由一个简单的程序生成的。 我的问题是如何将其转换为: 它必须完全对齐 我必须使用左对齐,而不是“制表符”(\t)。 另外,我还要计算字符串的长度。到目前为止,我的代码如下: int i; int long temp; char a = 'a'; char command[][12]= { "BEGIN", "CLOSE",

我必须解决一个涉及左对齐字符串长度和前导零的问题

我有下表:

  • 开始
  • 接近
  • 连接
  • 删除
  • 结束
  • 初始化
  • 印刷品
  • 这是由一个简单的程序生成的。 我的问题是如何将其转换为:

    它必须完全对齐

    我必须使用左对齐,而不是“制表符”(\t)。 另外,我还要计算字符串的长度。到目前为止,我的代码如下:

     int i;
    
     int long temp;
    
     char a = 'a';
    
     char command[][12]= {
    
    "BEGIN", "CLOSE", "CONCATENATE", "DELETE",
    "END" , "INITIALIZE", "PRINT", "WRITE"
    
    };
    
    int main()
    
    {
    
    printf("a/a \tCommand \tLength\n");
    
    for (i=0 ; i<8 ;i++){
    
        temp = strlen(command[i]);
    
        printf("%c. %10s %ld \n",a, command[i], temp);
    
        a++;
    
    }
    
    printf("\n");
    
    return 0;
    
    }
    
    感谢您的帮助。 谢谢。

    来自printf手册:

    字段宽度

    可选的十进制数字字符串(第一位数字不为零),用于指定 最小字段宽度。如果转换后的值包含更少的字符 大于字段宽度时,将在左侧(或左侧)填充空格 右,如果已给出左调整标志)而不是 十进制数字字符串一个人可以写“*”或“*m$”(对于某些十进制数字) 整数m)指定字段宽度在下一个 参数,或分别位于第m个参数中,其类型必须为 内部的。 (强调矿山)

    所以你可以写:

    printf("%c. %10s %*ld \n",a, command[i], temp, integer);
    

    作为如何输出所需内容的示例:

    该行:

    printf("%c. %10s %ld \n",a, command[i], temp);
    
    printf("%c. %10s %ld \n",a, command[i], temp);
    
    应写为:

    printf("%c. %-10.10s %5.ld \n",a, command[i], temp);
    
    printf("%c. %-10.10s %5.ld \n",a, command[i], temp);
    
    这一行:

    应写为:

    printf("%c. %-10.10s %5.ld \n",a, command[i], temp);
    
    printf("%c. %-10.10s %5.ld \n",a, command[i], temp);
    
    请注意%s上的“-”表示左对齐

    请注意%s上的10.10以强制字段始终为10个字符

    请注意%d上的“5.”强制该字段始终为5个字符 (右对齐)

    除空格外,还对填充字符进行了其他修改,以抑制前导0抑制等

    您可能想在此处查看更多详细信息:


    此解决方案似乎有效。我会测试它,看看是否还需要其他东西。否则,我将检查您的答案作为解决方案。非常感谢,是的。我的任务是修改给定输出中的输出。出于格式化的目的,我需要找到关于左对齐最小字符串长度和前导零的信息。你希望在哪里找到前导零?我不知道。这只是包括在我的问题中。我想我不会在任何事情上使用它,但我只想就它的功能说几句话。谢谢你的回复。