首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请教下 sprintf 这句,里面的 %s\0 字符串中后面的 "\0" 是什么意思

2013-11-21 
请问下 sprintf 这句,里面的 %s\0 字符串中后面的 \0 是什么意思?Hi,请问下面这句,里面的 %s\0 字符串中

请问下 sprintf 这句,里面的 %s\0 字符串中后面的 "\0" 是什么意思?
Hi,

请问下面这句,里面的 %s\0 字符串中后面的 "\0" 是什么意思? 

sprintf(variable, "%s\0", value);

可以直接写成下面这样吗:

sprintf(variable, "%s", value);

请帮下忙解答一下。
[解决办法]
就是\0了呗
可以直接"%s"
[解决办法]

引用:
Hi,

请问下面这句,里面的 %s\0 字符串中后面的 "\0" 是什么意思? 

sprintf(variable, "%s\0", value);

可以直接写成下面这样吗:

sprintf(variable, "%s", value);

请帮下忙解答一下。

理论上是可以的,\0是字符串的结尾,sprintf把value放到variable里面,碰到value里的\0结束,但如果一直没有\0,就会一直放,一直放……
这里的\0我实在看出出一点点点的作用,好像真的没啥用
[解决办法]
作用是在字符串结尾添加'\0'结束符
但是gcc下的sprintf会自动追加'\0',所以此时是多余的
vc编译器下的sprintf不会自动追'\0',但是如果你的value一般已经有'\0'结束符,复制的时候会将这个'\0'复制到新的字符串中,所以大多数时候也是多余的,当然也有例外,如果value没有'\0',此时在VC下就会出现乱码了

#include <stdio.h>

int main(void)
{
  char value[4]="abcd";//注意,此时value没有'\0'结束符,VC下结果会出问题。
  char variable[6]="12345";
  sprintf(variable, "%s", value);  
  printf("variable=%s\n",variable);

  return 0;
}

[解决办法]
这里的"\0"是多余的,sprintf函数会自动补上字符串结束字符'\0'。

热点排行