关于 strcpy 的问题,描述不清楚问题,直接看代码吧。
这是出现在我的作业里面的一个小片段,因为作业很长就把我主要困惑的截图截出来了。目的是从words.dat(一个类似于字典的东西,里面有很多很多单词)里面读取出一个单词,因为fgets读出来的str1最后有个‘\0’,所以我用strncpy将fgets‘\0’前的拷贝到另外一个str2里面,但是str2厘米又出现了奇怪的东西。。。但是用memset清0后好像又正常了,不知道这样子的原因,求大神解释。程序代码:
#include<stdio.h> #include<string.h> int main(void) { FILE *dictionary; dictionary = fopen("words.dat","r"); char str1[20],str2[20]; fgets(str1,20,dictionary); int m,n; m=strlen(str1); n=strlen(str2); printf("m=%d\nn=%d\n",m,n); printf("str1=%s\nstr2=%s\n",str1,str2); memset(str2,0,20); strncpy(str2,str1,10); m=strlen(str1); n=strlen(str2); printf("m=%d\nn=%d\n",m,n); printf("str1=%s\nstr2=%s\n",str1,str2); }