字符数组的右填充在c中不起作用
我有数据的字符数组;我将它写入一个缓冲区,以便在单行中显示它们字符数组的右填充在c中不起作用,c,printf,C,Printf,我有数据的字符数组;我将它写入一个缓冲区,以便在单行中显示它们 char buffer[150] ; sprintf(buffer, "%-17s%-25s%-20s%-17s%s" , array[0],array[1], array[2],array[3],array[4]); //code uses buffer to add values to interface 我只是想将它们全部对齐。稍后我会使用这些值在界面中显示 char buffer[1
char buffer[150] ;
sprintf(buffer, "%-17s%-25s%-20s%-17s%s" , array[0],array[1], array[2],array[3],array[4]);
//code uses buffer to add values to interface
我只是想将它们全部对齐。稍后我会使用这些值在界面中显示
char buffer[150] ;
sprintf(buffer, "%-17s%-25s%-20s%-17s%s" , array[0],array[1], array[2],array[3],array[4]);
//code uses buffer to add values to interface
我做错了什么
char buffer[150] ;
sprintf(buffer, "%-17s%-25s%-20s%-17s%s" , array[0],array[1], array[2],array[3],array[4]);
//code uses buffer to add values to interface
注意:数组的示例值
char buffer[150] ;
sprintf(buffer, "%-17s%-25s%-20s%-17s%s" , array[0],array[1], array[2],array[3],array[4]);
//code uses buffer to add values to interface
array[0] = '799234' or '799923'-1'
array[1] = '28/02/2014 08:03'
array[2] = 'CCC' or 'CC'
array[3] = '28/02/2014 18:03'
array[4] = '799234' or '79921'
缓冲的预期结果;我想在每个数组后添加空格以获得固定长度
char buffer[150] ;
sprintf(buffer, "%-17s%-25s%-20s%-17s%s" , array[0],array[1], array[2],array[3],array[4]);
//code uses buffer to add values to interface
799234 28/02/2014 08:03 CCC 28/02/2014 18:03 799234
799923-1 28/02/2014 08:03 CC 28/02/2014 18:03 79921
79921 28/02/2014 08:03 CCC 28/02/2014 18:03 799234
Actaul输出
char buffer[150] ;
sprintf(buffer, "%-17s%-25s%-20s%-17s%s" , array[0],array[1], array[2],array[3],array[4]);
//code uses buffer to add values to interface
799234 28/02/2014 08:03 CCC 28/02/2014 18:03 799234
799923-1 28/02/2014 08:03 CCC 28/02/2014 18:03 79921
79921 28/02/2014 08:03 CCC 28/02/2014 18:03 799234
它的工作原理应该是,如何用这些字符串初始化数组?不能使用单引号
''
或双引号''
分配字符串
char buffer[150] ;
sprintf(buffer, "%-17s%-25s%-20s%-17s%s" , array[0],array[1], array[2],array[3],array[4]);
//code uses buffer to add values to interface
输出:
char buffer[150] ;
sprintf(buffer, "%-17s%-25s%-20s%-17s%s" , array[0],array[1], array[2],array[3],array[4]);
//code uses buffer to add values to interface
799234 28/02/2014 08:03 CCC 28/02/2014 18:03 799234
799923-1 28/02/2014 08:03 CCC 28/02/2014 18:03 79921
79921 28/02/2014 08:03 CCC 28/02/2014 18:03 799234
这里也有
char*array[150]
的例子。您的类型是什么?什么是array
<代码>数组[0]是数组的第一个元素。我会写:
char buffer[150] ;
sprintf(buffer, "%-17s%-25s%-20s%-17s%s" , array[0],array[1], array[2],array[3],array[4]);
//code uses buffer to add values to interface
char arr0[] = "799234";
char arr1[] = "28/02/2014 08:03";
char arr2[] = "CCC";
char arr3[] = "28/02/2014 18:03";
char arr4[] = "799234";
如果打印缓冲区,预期输出和实际输出是什么?请编辑您的问题以包含这两个问题。数组decl是什么样子的?正如您所写的,它应该是char*array[5];“但是”用于单个字符。@Claptrap是;我已经声明了char*array[100][5]。这里我简化了代码。(i=0;ichar*数组[100][5]的actaul onefor(i=0;ichar*数组[100][5])是一级间接寻址太多了,失去了*i已声明char*数组[100][5]。这里我简化了代码。actaul onefor(i=0;ichar*数组[100][5]
如何为其赋值?这意味着它不会编译,因为如果尝试赋值类型为'char 5]'from type'char*'我在赋值方面没有问题;代码符合要求并生成如上所述的结果。我想要的是,如果数组[0]=“799234”,我想添加11个空格。数组[0]=“799234-1”,我想添加9个空格。也就是说,我尝试了“%-17s”以获得17个字符的固定长度。但它没有按预期工作。