为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我自己手写数组str[]没问题,加入文本读入之后就运行失败了。希望慕友能指出问题

为什么我自己手写数组str[]没问题,加入文本读入之后就运行失败了。希望慕友能指出问题

C
慕桂英4014372 2023-03-18 18:14:21
代码如下#include<stdio.h>#include<stdlib.h>#include<time.h>int scan();void daoxuprint(char str[100],int n);char str[100];FILE* fp;void main(){int n;n=scan();daoxuprint(str,n);}int scan(){fp=fopen("figure.txt","r");int i,n;for(i=0;str[i]!='\n';i++)n=i;fscanf(fp,"%s",&str);return n+1;}void daoxuprint(char str[100],int n){int j;for(j=n;j>=0;j--)printf("%c",str[j]);}其中figure.txt是任意长度的整数,不知道哪里出了错,这个程序实现的主要是从文本读入一个整数,倒序输出。
查看完整描述

2 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

#include<stdio.h>
#include<stdlib.h>
//多余 
//#include<time.h>

int scan();
void daoxuprint(char str[100],int n);
char str[100];
FILE* fp;
void main()
{
int n;
n=scan();
daoxuprint(str,n);
}
int scan()
{
int i,n;

fp=fopen("figure.txt","r");
//fscanf(fp,"%s",&str);&str错误,改成str 
fscanf(fp,"%s",str);
//文件打开了要关闭 
fclose(fp);
//for前要先执行fscanf(fp,"%s",str);,以读取文件中的数据到str数组中 
//且fscanf函数不会读入换行符'\n',str会以'\0'结束,统计长度时应判断'\0'
//或调用strlen(str);函数 
for(i=0;str[i]!='\0';i++)
n=i;
return n+1;
}
void daoxuprint(char str[100],int n)
{
int j;

//j应从n-1开始,因为n是str的长度,最后一个元素的下标是n-1 
for(j=n-1;j>=0;j--)
printf("%c",str[j]);
}


查看完整回答
反对 回复 2023-03-21
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

是你的str[i]并没有值,等于访问了无效内存,在for循环里没法判断,你先fscanf,再for


查看完整回答
反对 回复 2023-03-21
  • 2 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信