鱼C论坛

 找回密码
 立即注册
查看: 1766|回复: 9

[已解决]fun()函数错误,请大神们帮忙找找茬~

[复制链接]
发表于 2017-8-24 17:42:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目是输入两个字符串,返回长的那一个,如果一样长返回第一个
#include <stdio.h>
/*重点是这个fun()其他地方没有错*/
char *fun(char *s,char *t)
{int i;
for(i=0;(*(s+i)!='\0')||(*(t+i)!='\0');i++);
printf("%d",i);
if((*(t+i)=='\0')&&(*(s+i)=='\0'))return s;
if(*(s+i)=='\0')return t;
if(*(t+i)=='\0')return s;


}
/*结束啦 就是找不出错,蓝瘦*/
void NONO ( )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *fp, *wf ;
  int i ;
  char a[20], b[20] ;

  fp = fopen("bc03.in","r") ;
  if(fp == NULL) {
    printf("数据文件bc03.in不存在!") ;
    return ;
  }
  wf = fopen("bc03.out","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(fp, "%s %s", a, b) ;
    fprintf(wf, "%s\n", fun(a, b)) ;
  }
  fclose(fp) ;
  fclose(wf) ;
}
main()
{   char a[20],b[10];
    printf("Input 1th string:");
    gets(a);
    printf("Input 2th string:");
    gets(b);
    printf("%s\n",fun(a,b));
    NONO ();
}
最佳答案
2017-8-25 16:04:28
把for循环中的||改成&&
A2E5Z3EW(2C0EUJC4AIOJS9.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-24 19:24:43 | 显示全部楼层
恕我直言,你的代码排版真的扎心。而且少了很多代码段标志{}。我也不知道你是不是要打印这样的。
捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-25 14:43:48 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-24 19:24
恕我直言,你的代码排版真的扎心。而且少了很多代码段标志{}。我也不知道你是不是要打印这样的。

请问,这样执行的话,等其中一个字符串到了'\0',循环退出,这样怎么执行return语句?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-25 15:55:32 | 显示全部楼层
hello`world 发表于 2017-8-25 14:43
请问,这样执行的话,等其中一个字符串到了'\0',循环退出,这样怎么执行return语句?

当函数运行到最后会自动返回到调用它的函数,不过按照我图片上的来说的确是没什么意义,总是循环判定先检测退出,根本不会到里面的if判断。这个程序是要做什么的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-25 16:03:47 | 显示全部楼层
char *fun(char *s,char *t)
{
int i;
for(i=0;(*(s+i)!='\0')&&(*(t+i)!='\0');i++);
printf("%d",i);
if((*(t+i)=='\0')&&(*(s+i)=='\0'))return s;
if(*(s+i)=='\0')return t;
if(*(t+i)=='\0')return s;


}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-25 16:04:28 | 显示全部楼层    本楼为最佳答案   
把for循环中的||改成&&
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-26 17:43:17 | 显示全部楼层
cjj186 发表于 2017-8-25 16:04
把for循环中的||改成&&

谢谢兄台!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-26 17:44:15 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-25 15:55
当函数运行到最后会自动返回到调用它的函数,不过按照我图片上的来说的确是没什么意义,总是循环判定先检 ...

第一行有写,这是二级C语言考试题,拼命做题中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-26 17:44:33 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-25 15:55
当函数运行到最后会自动返回到调用它的函数,不过按照我图片上的来说的确是没什么意义,总是循环判定先检 ...

第一行有写,这是二级C语言考试题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-26 17:45:01 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-25 15:55
当函数运行到最后会自动返回到调用它的函数,不过按照我图片上的来说的确是没什么意义,总是循环判定先检 ...

第一行有写,这是二级考试题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 14:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表