读书人

【初学者】请教下自定义函数完成strcp

发布时间: 2012-02-16 21:30:36 作者: rapoo

【菜鸟求助】请问下自定义函数完成strcpy()功能的问题?补充问题
#include <iostream.h>

void main() //strcpy()的自定义函数
{
char s[80]= "apple ";
char t[80];
for(int i=0;s[i]!= '\0 ';i++)
t[i]=s[i];
t[i]= '\0 ';
cout < <s < <endl;
cout < <t < <endl;
}

再问一下
如果把
for(int i=0;s[i]!= '\0 ';i++)
t[i]=s[i];
t[i]= '\0 ';
改成
for(int i=0;t[i]!= '\0 ';i++)
t[i]=s[i];
char s 的输出反而不对了
char t 的输出倒是对的
为什么?

[解决办法]
我给你看一下:

#include <stdio.h>

void main() //strcpy()的自定义函数
{
char s[80]= "apple ";
char t[80];

for(int i=0; t[i]!= '\0 '; i++)
{
t[i]=s[i];
printf ( "%d %c\n ", i, t[i]);/* 多加了这条语句,目的是为让你知道这个循环一共执行了多少次*/
}
t[i]= '\0 ';
puts (s);
puts (t);
}

执行完这个程序后我们发现这个循环共执行了84次,而我们认为执行5(apple)次就应该退出了,这多出来的79我也不明白是为什么,但这个程序在TC下就很正常。所以我认为是编译器的原因,建议楼住也换一个编译器实验一下。



[解决办法]
你的数组T是空的,而循环又以\0作为结束的标志,你觉得会循环到什么时候?数组t里有\0吗?

读书人网 >C++

热点推荐