使字符串中字符的位置静态,这样它就不会移动

Making the position of a character in a string static, so that it won't move

我是 C 编程新手。

我想做的是找到一种方法来冻结 printf 语句中的“|”,主要是代码右侧的那些。

正如您在代码中看到的那样,如果我在生成可变数量字符的 printf 语句中放入任何内容,它会根据生成的字符数量移动“|”。

所以我希望看看是否有人可以帮助我解决这个问题,这样 printf 中生成的内容就不会改变“|”的位置。

这是代码,以便你们了解我在说什么。

#include <stdio.h>

int main ()
{

    char Employee1_NameF[20];
    char Employee1_NameL[20];

        printf("Employee Name: ");
        scanf("%s %s", &Employee1_NameF,&Employee1_NameL);

    printf(" __________________________________________________________________________________________________ \n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|--------------------------------------------------------------------------------------------------|\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");;
    printf("|__________________________________________________________________________________________________|\n");
    printf("|--------------------------------------------------------------------------------------------------|\n");
    printf("|         THE FACE OF THIS DOCUMENT HAS A MULTICOLORED BACKGROUND ON WHITE PAPER                   |\n");
    printf("|--------------------------------------------------------------------------------------------------|\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                 %s %s            |\n",  Employee1_NameF, Employee1_NameL);
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|                                                                                                  |\n");
    printf("|__________________________________________________________________________________________________|\n");
}

我不会破坏你的学习乐趣,只是给出一些提示。

strlen%<width>s 以及 %<-width>s 格式字符串中的说明符是您的朋友。阅读它们可能会对您有所帮助。

例如比较

的输出
printf("<%8s%8s>\n", "foo", "bar");

v/s

printf("<%-8s%-8s>\n", "foo", "bar");

v/s

printf("<%s%s>\n", "foo", "bar");

并使用一些数学知识。

实现此功能的另一种方法是准备要动态打印的固定长度字符串。

您可能还想阅读 Centering strings with printf()