如何在C中填充char数组

时间:2015-11-13 09:14:13

标签: c arrays char

开始
char tval[20] = "temp:26.62";

如何在填充tval之前添加空格字符?我最终需要这个来获得这个:

char tval[20] = "temp:26.62          ";

4 个答案:

答案 0 :(得分:7)

像这样,可能是

size_t prevlen = strlen(tval);
memset(tval + prevlen, ' ', 19 - prevlen);
*(tval + 19) = '\0';

答案 1 :(得分:1)

如果tval[20]是固定大小且20始终是大小,则可以遍历数组并执行此操作:

char tval[20] = "temp:26.62";

现在发生的事情是你的char tval[20]看起来像这样:

{'t','e','m','p',':','2','6','.','6','2','\0'}

其余的将填充\0

您现在可以迭代:

for (int i = 0; i < 19; i++)
{
if (tval[i] == '\0')
   {
    tval[i] = ' ';
   }
}

使用nullbyte终止字符串很重要。 如果选择不这样做,则不能在char数组上使用任何字符串函数,因为如果这样做,将调用未定义的行为。

答案 2 :(得分:0)

通常,表格由大括号中数组元素列表的指示初始化:

char tval [] = {'H', 'e', ​​'l', 'l', 'o', '\ 0'};

  

对于特殊情况的字符数组,我们可以使用更舒适   引导只是声明一个常量字符串:

char tval [] = "Hello";

在通过[]初始化期间,计算机会自动保留链所需的字节数,即:字符数+ 1(此处:6个字节)。如果它大于或等于初始化字符串的长度,我们还可以显式指定要保留的字节数。

答案 3 :(得分:0)

试试这个:

#include<stdio.h>
#include<string.h>

int main(void){
    char tval[20] = "temp:26.62";

    size_t length = strlen(tval);

    printf("Length of TVAL Before = %zu\n", length);

    while(length < 19){
        tval[length] = ' ';
        length++;
    }

    tval[19] = '\0';

    printf("Length of TVAL After =  %zu\n",length);
    printf("TVAL = %s\n",tval);

    return 0;
}

输出:

Length of TVAL Before = 10
Length of TVAL After =  19
TVAL = temp:26.62

您可以使用点来检查它:

#include<stdio.h>
#include<string.h>

int main(void){
    char tval[20] = "temp:26.62";

    size_t length = strlen(tval);

    printf("Length of TVAL Before = %zu\n\n", length);

    while(length < 19){

        tval[length] = ' ';
        length++;
    }

    tval[18] = '.';
    tval[19] = '\0';

    printf("TVAL = %s\n\n",tval);
    printf("Length of TVAL After =  %zu\n",length);

    return 0;
}

输出:

Length of TVAL Before = 10
TVAL = temp:26.62        .
Length of TVAL After =  19
相关问题