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'?谢谢!
展开
 我来答
huifeng00
推荐于2017-09-06 · TA获得超过5235个赞
知道大有可为答主
回答量:808
采纳率:0%
帮助的人:711万
展开全部
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我
席兆堂怜南
2019-08-04 · TA获得超过3618个赞
知道大有可为答主
回答量:3064
采纳率:26%
帮助的人:213万
展开全部
str[1]=0

str[1]='\0'两个语句具有同样的功能,也就是等价的,当然,str声明的应该是一个字符串,str[1]=0
不必多说,str[1]='\0'后面是以字符形式的赋值方式,使用了转意字符"\",也就是字符的值等于0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式