c语言编程:字符串拷贝(程序改错)

2025-03-06 03:23:10
推荐回答(2个)
回答1:

不知道你这是做的题目还是练习什么的?这题有很大的问题。
1字符串数组大小的问题,然后因为这个导致后面函数strcpy和后面的字写函数都有问题。哪怕代码改的可以正常运行,以后肯定还是会有指针溢出

#include
#include

#define BUF_SIZE 10

#define setString for (i=0;i#define showString printf("[%s]\n",string1)

void strCpy1(char* t,const char *f);
void strCpy2(char* t,const char *f);
void strCpy3(char* t,const char *f);

int main() {
int i;
char string[BUF_SIZE]="123456789";
char string1[BUF_SIZE];

setString;
strcpy(string1,string);
showString;

setString;
strncpy(string1,string,strlen(string)+1);//change (1)
showString;

setString;
strCpy1(string1,string);
showString;

setString;
strCpy2(string1,string);
showString;

setString;
strCpy3(string1,string);
showString;

return 0;
}

void strCpy1(char* t,const char *f) {
for (unsigned i=0;i t[i]=f[i];
}

void strCpy2(char* t,const char *f) {
while ((*t++=*f++)!='\0');//change3
}

void strCpy3(char* t,const char *f) {
while ((*t++=*f++)!='\0'); //change 4
}

回答2:

在电脑上运行,就知道哪地方出错了

~