2015-10-24 44 views
-2

我想打印一个像这样的模式:如何根据字符串长度打印?

C C++ Java Java 
Java Java C C++ 

在分配到最大字符

char *str1 = "C"; 
char *str2 = "C++"; 
char *str3 = "Java"; 

printf("%s ", str1);printf("%s ", str2);printf("%s ", str3);printf("%s ", str3); 
printf("\n%s ", str3);printf("%s ", str3);printf("%s ", str1);printf("%s ", str2); 

我使用的字符长度和附加长度,字符指针尝试上述模式空间,但不成功的。

+3

这不太清楚。你究竟做了什么*?结果是什么?乍看之下,你的方法看起来很合理(使用strlen plus strcat),但魔鬼在细节中。例如。谁分配内存的额外空间进入?另外,正如@ user3121023所指出的那样,你是否正在这样做来格式化一个已知的输出(为此你将使用printf)还是试图进一步/更复杂? – LSerni

+0

@lserni我正在尝试打印上面的字符。如果字符长度较短,则根据最长字符占用空间,我使用printf来打印它 – Jennifer

+0

@JavaTest可以共享printf()语句吗? –

回答

1

您需要一种方法来确定任何列中最长的字符串。那么你可以使用

printf ("%*s ", longestWordInColumn, aColumnEntry[y]); 

为每一列,其中longestWordInColumn保持这个长度。

对于这个工作为任何每列的条目列表,你需要循环几次字符串的数组,这表明使用数组。

如果你的字符串都是固定的,在你的榜样,那么所有你需要的是手动计数字符串的长度,确定每列中最长的,并使用一个固定的宽度:

printf ("%-10s ", someString); 

哪里10是实际编号的占位符。