回 帖 发 新 帖 刷新版面

主题:指针问题

#include <stdio.h>
void copy_string(char from[],char to[])
{int i=0;
while(from[i]!='\0')
  {to[i]=from[i];i++;}
  to[i]='\0';
}
main()
{
 char *a="I am a teacher.";
 char *b="you are a student.";
 printf("string a=%s\nstring b=%s\n",a,b);
 copy_string(a,b);
 printf("nstring a=%s\nstring b=%s\n",a,b);
}

此题是谭浩强《C程序设计(第二版)》99年12月第二版 第236页的例题

运行有问题请高人指教

回复列表 (共3个回复)

沙发

不要再看谭浩强的书了,因为年代久远,C标准早就变过几次了,很多东西已经过时了;而且他当初写书时,参考资料少,有太多错误。

以下代码在 gcc 4.7.0 中编译(-std=c99)通过
[code=c]
#include <stdio.h>
void copy_string( const char* from, char* to )
{
    for( ; *to++=*from++; );
}
int main()
{
    const char *a = "I am a teacher.";
    char b[]      = "you are a student.";
    printf("string a=%s\nstring b=%s\n",a,b);
    copy_string( a, b ); // 确保 b空间大于a
    printf("nstring a=%s\nstring b=%s\n",a,b);

    return 0;

[/code]

板凳


编译通过不是参考指标,成功运行并得到预期结果才重要。

3 楼

竟然插不进代码
[img]F:\1103.jpg[/img]
{
   int i=0;
    //-----修改----
   int lenf = strlen(from);
   int lento   = strlen(to);
   if(lenf < lento)
   {
     printf("字符串无法复制,请检查长度是否合适!\n");
     return;
   }
   //-------------
   while(from[i]!='\0')
   {
      to[i]=from[i];
      i++;
   }
   to[i]='\0';
 }

我来回复

您尚未登录,请登录后再回复。点此登录或注册