请教上 sprintf 这句,里面的 %s\0 字符串中后面的 "\0" 是什么意思
请问下 sprintf 这句,里面的 %s\0 字符串中后面的 "\0" 是什么意思?
Hi,
请问下面这句,里面的 %s\0 字符串中后面的 "\0" 是什么意思?
sprintf(variable, "%s\0", value);
可以直接写成下面这样吗:
sprintf(variable, "%s", value);
请帮下忙解答一下。
------解决方案--------------------
就是\0了呗
可以直接"%s"
------解决方案--------------------
------解决方案--------------------
作用是在字符串结尾添加'\0'结束符
但是gcc下的sprintf会自动追加'\0',所以此时是多余的
vc编译器下的sprintf不会自动追'\0',但是如果你的value一般已经有'\0'结束符,复制的时候会将这个'\0'复制到新的字符串中,所以大多数时候也是多余的,当然也有例外,如果value没有'\0',此时在VC下就会出现乱码了
Hi,
请问下面这句,里面的 %s\0 字符串中后面的 "\0" 是什么意思?
sprintf(variable, "%s\0", value);
可以直接写成下面这样吗:
sprintf(variable, "%s", value);
请帮下忙解答一下。
------解决方案--------------------
就是\0了呗
可以直接"%s"
------解决方案--------------------
------解决方案--------------------
作用是在字符串结尾添加'\0'结束符
但是gcc下的sprintf会自动追加'\0',所以此时是多余的
vc编译器下的sprintf不会自动追'\0',但是如果你的value一般已经有'\0'结束符,复制的时候会将这个'\0'复制到新的字符串中,所以大多数时候也是多余的,当然也有例外,如果value没有'\0',此时在VC下就会出现乱码了
- C/C++ code
#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'。