鱼C论坛

 找回密码
 立即注册
查看: 1293|回复: 4

[已解决]大神求救

[复制链接]
发表于 2020-2-10 14:58:33 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Aseeker 于 2020-2-10 15:03 编辑

#include <string.h>
#include <stdio.h>
void fun( char s[],int c)
{
        int i,j,len=strlen(s);
        for(i=0;i<len;i++)
        {
                if(s[i]==c)
                {
                        for(j=i;j<len;j++)
                        {
                                s[j]=s[j+1];
                        }
                }
                s[j]='\0';//为什么在这里的j是未赋值,而不是等于len ,我知道这句不用加,没有用
        }
}
void main()
{
  static char str[]="turbo c and borland c++";
  char ch;
  FILE *out;
  printf ("原始字符串:%s\n ",str);
  printf("输入一个字符串:\n");
  scanf("%c",&ch);
  fun(str,ch);
  printf("str[]=%s\n",str);
  strcpy(str,"turbo c and borland c++");
  fun(str,'a');
  /******************************/
  out=fopen("out.dat","w");
  fprintf(out,"%s",str);
  fclose(out);
  /******************************/
  system("pause");
}
最佳答案
2020-2-10 20:17:58
原因为:
1. j在定义阶段没有初始化值
2. 条件if(s==c) 没有成立,导致j没有赋值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-10 16:37:43 | 显示全部楼层
代码先看看能不能正确运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-10 19:53:12 | 显示全部楼层
qiuyouzhi 发表于 2020-2-10 16:37
代码先看看能不能正确运行

删除那句就可以
我只是想问问那句 j 为什么会是提醒未赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-10 20:17:58 | 显示全部楼层    本楼为最佳答案   
原因为:
1. j在定义阶段没有初始化值
2. 条件if(s==c) 没有成立,导致j没有赋值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-11 08:25:26 | 显示全部楼层
Aseeker 发表于 2020-2-10 19:53
删除那句就可以
我只是想问问那句 j 为什么会是提醒未赋值

因为后面那个j不在定义j的for循环里
这就是变量的作用域
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 05:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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