赞赞麋 发表于 2020-6-30 10:09:03

运行结果是错误的,为什么?用的是vc6.0


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void fun(char*s,char*t)
{      
      int i,s1;
      s1=strlen(s);
      for(i=0;i<=s1;i++)
                t=s;
      for(i=0;i<s1;i++)
                t=s;
      t='\0';
}
int main()
{
      char s,t;
    printf("\nPlease enter string s:");
    scanf("%s",s);
    fun(s,t);
    printf("The result is:%s\n",t);
    return 0;
}

qiuyouzhi 发表于 2020-6-30 10:10:48

所以你想要什么输出结果呢?

chxchxkkk 发表于 2020-6-30 11:07:33

本帖最后由 chxchxkkk 于 2020-6-30 11:10 编辑

这个程序想实现什么?
for(i=0;i<=s1;i++) -》 这个循环要起什么作用呢?
                t=s;
直接 t = s 就可以 或者 t = s
t='\0'; 这一句决定了 t = s了,下面的循环不起作用
for(i=0;i<s1;i++)
                t=s;
如果要实现的下面的效果 比如:
s = abcde
t = abcdeedcba
那么,代码应该如下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void fun(char*s,char*t)
{
      int i,s1;
      s1=strlen(s);
      for(i=0;i<=s1;i++)
                t = s;
      for(i=0;i<s1;i++)
                t=s;
      t='\0';
}
int main()
{
    char s,t;
    printf("\nPlease enter string s:");
    scanf("%s",s);
    fun(s,t);
    printf("The result is:%s\n",t);
    return 0;
}

如果想实现字符串逆置则应该如下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void fun(char*s,char*t)
{
      int i,s1;
      s1=strlen(s);
//      for(i=0;i<=s1;i++)
//                t = s;
      for(i=0;i<s1;i++)
                t=s;
      t='\0';
}
int main()
{
    char s,t;
    printf("\nPlease enter string s:");
    scanf("%s",s);
    fun(s,t);
    printf("The result is:%s\n",t);
    return 0;
}

405794672 发表于 2020-6-30 11:36:10

这不是改错那个吗?怎么,昨天改得不对?{:10_277:}

赞赞麋 发表于 2020-7-2 13:58:20

chxchxkkk 发表于 2020-6-30 11:07
这个程序想实现什么?
for(i=0;i

谢谢

赞赞麋 发表于 2020-7-2 13:59:17

405794672 发表于 2020-6-30 11:36
这不是改错那个吗?怎么,昨天改得不对?

输出结果是错的
页: [1]
查看完整版本: 运行结果是错误的,为什么?用的是vc6.0