首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【初学者】请教下自定义函数完成strcpy()功能的有关问题?补充有关问题

2012-02-16 
【菜鸟求助】请问下自定义函数完成strcpy()功能的问题?补充问题#include iostream.hvoidmain()//strcpy()

【菜鸟求助】请问下自定义函数完成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吗?

热点排行