字符串 怎么出了 # 这个字符
编一个改名程序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <io.h>
#include <string.h>
#include <windows.h>
int main(int argc, char* argv[])
{
struct _finddata_t f;
long p;
char* c,*s1,ss[11];
int i;
p=_findfirst("*.Unknown",&f);
c=strstr(f.name,"pdg");
strncpy(ss,c-7,10);
rename(f.name,ss);
while(_findnext(p,&f)==0)
{c=strstr(f.name,"pdg");
strncpy(ss,c-7,10);
rename(f.name,ss);}
return 0;
}
改名之后总变成"pdg#" 的形式,#怎么来的?
如果用printf打印ss,也是pdg加一个乱码。
请教了
[解决办法]
在char ss[11];后面加一句:
memset(ss, 0, 11);或者 ss[10]= '\0';
就可以了!
注意:字符串是以'\0'结尾的!
[解决办法]
strncpy(ss,c-7,10);
strncpy不会自动拷贝'\0'的
[解决办法]
以上结论你可以自己试验一下,就在你上面的代码里设一个断点,然后看f.name 地址和 c的地址相差多少。就能知到c是否指向f.name串内的某个字符