将字符串中的字符位置设置为静态,以便它不会移动

时间:2016-03-30 13:40:04

标签: c printf c-strings

我是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");
}

1 个答案:

答案 0 :(得分:3)

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

printf格式字符串中的

Sub Foo() Dim x As String, matches As Boolean x = "P123" matches = (x Like "P" & Application.Rept("[0-9]", Len(x) - 1)) Debug.Print matches End Sub strlen以及%<width>s说明符是您的朋友。阅读它们可能对你有帮助。

例如,比较

的输出
%<-width>s

V / S

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

V / S

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

并使用一些数学。

实现此功能的另一种方法是准备固定长度的字符串,以便即时打印。

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