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

代码如下
#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是任意长度的整数,不知道哪里出了错,这个程序实现的主要是从文本读入一个整数,倒序输出。

慕桂英4014372
浏览 79回答 2
2回答

GCT1015

#include<stdio.h>#include<stdlib.h>//多余&nbsp;//#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&nbsp;fscanf(fp,"%s",str);//文件打开了要关闭&nbsp;fclose(fp);//for前要先执行fscanf(fp,"%s",str);,以读取文件中的数据到str数组中&nbsp;//且fscanf函数不会读入换行符'\n',str会以'\0'结束,统计长度时应判断'\0'//或调用strlen(str);函数&nbsp;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&nbsp;for(j=n-1;j>=0;j--)printf("%c",str[j]);}

Smart猫小萌

是你的str[i]并没有值,等于访问了无效内存,在for循环里没法判断,你先fscanf,再for
打开App,查看更多内容
随时随地看视频慕课网APP