2016-03-30 11 views
1

私は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"); 
} 

答えて

3

私はあなたの学習の楽しさを損なうことなく、いくつかのヒントを与えます。

strlen%<width>s%<-width>sの指定者はprintfという形式の文字列はお友達です。それらについての読書はあなたを助けるかもしれません。例えば

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()

+0

を読むことをお勧めしますが、それは本当に私をたくさん助けた助けをありがとうございました。 – Alfredo

+0

補足として、複雑なprintfフォーマット指定子やその他のstdioの詳細について学ぶことは、おそらくあなたがLinuxプログラマとしてのキャリアを目指しているのでない限り、時間の無駄になる可能性があります。 Linux以外では、プロダクションコードとしてstdio.hを使用するプロフェッショナルプログラムはほとんどありません。 – Lundin

関連する問題