c语言字符串结束符问题
请问像这种:chartstr[100];sprintf(time,"%s.%d",tstr,tms.tv_usec/1000);使用这种带有格式说明字符串的"%s.%d"...
请问像这种:
char tstr[100];
sprintf(time, "%s.%d", tstr, tms.tv_usec/1000);
使用这种带有格式说明字符串的"%s.%d",都会自动将time最后一位存入结束
符'\0',所以不用显示声明tstr最后一位'\0'?谢谢! 展开
char tstr[100];
sprintf(time, "%s.%d", tstr, tms.tv_usec/1000);
使用这种带有格式说明字符串的"%s.%d",都会自动将time最后一位存入结束
符'\0',所以不用显示声明tstr最后一位'\0'?谢谢! 展开
2个回答
展开全部
sprintf 与 printf 类似,只不过输出到字符串变量。
char tstr[100];
sprintf(time, "%s.%d", tstr, tms.tv_usec/1000);
如果你这说明了%s,如果你赋值的时候没有显示的给他‘\0',或者它只是一个字符数组,不是字符串,没有关系,在运行sprintf()函数的时候只要你tstr还有空间,就会在尾部加上了’0‘;输出到time中例如下面的程序。
#include <stdio.h>
int main()
{
char data[6]={'a','b','c','d','e'};
char c;
char time[10];
sprintf(time,"%s",data);
printf("%s",time);
return 0;
}
但是如果你的数组长度不够例如下面
#include <stdio.h>
int main()
{
char data[5]={'a','b','c','d','e'};
char c;
char time[10];
sprintf(time,"%s",data);
printf("%s",time);
return 0;
}
就会输出time的时候会有些乱码,因为你data[5]不够长度后面加’0‘。
有问题hi我
char tstr[100];
sprintf(time, "%s.%d", tstr, tms.tv_usec/1000);
如果你这说明了%s,如果你赋值的时候没有显示的给他‘\0',或者它只是一个字符数组,不是字符串,没有关系,在运行sprintf()函数的时候只要你tstr还有空间,就会在尾部加上了’0‘;输出到time中例如下面的程序。
#include <stdio.h>
int main()
{
char data[6]={'a','b','c','d','e'};
char c;
char time[10];
sprintf(time,"%s",data);
printf("%s",time);
return 0;
}
但是如果你的数组长度不够例如下面
#include <stdio.h>
int main()
{
char data[5]={'a','b','c','d','e'};
char c;
char time[10];
sprintf(time,"%s",data);
printf("%s",time);
return 0;
}
就会输出time的时候会有些乱码,因为你data[5]不够长度后面加’0‘。
有问题hi我
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询