从
开始char tval[20] = "temp:26.62";
如何在填充tval
之前添加空格字符?我最终需要这个来获得这个:
char tval[20] = "temp:26.62 ";
答案 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