C语言文件读取代码问题

作者&投稿:和金 (若有异议请与网页底部的电邮联系)
C语言从文件中读取数据的问题~

首先 fscanf 是一个函数,它的具体形式如下;
int fscanf( FILE *stream, const char *format [, argument ]... );
他的第一个参数是一个指向FILE结构体的指针;在您的程序中,stdin是c语言中的关键字,关键字就是系统中已经定义的标示符,它的原始定义是FILE * stdin;它本身就是FILE类型的指针,系统已经帮你定义好了,重复定义当然会出错;
对于Retcode = 3的原因是
fscanf的返回值说起,它的返回的是你所传递给他的变量中成功赋值的变量的个数;它的值是3,只是能说是一种偶然,因为你上面的编程方法是不对的,你首先应该把题目给定的值写到Text2.in中去然后才能够再去读它,你那样编直接就读Text2.in文件程序崩溃才对,得到3也是时一个错误的值;
希望对你有帮助!

读取文件失败,很有可能是代码问题,参考代码如下,注意注释:
#include "stdio.h"
#include
int main(int argc, char* argv[])
{
FILE *fp;
int i,t,sum=0; //sum需要初始化为0
fp=fopen("d:\\1.txt","r"); //打开文件
if(!fp)
{
printf("打开文件失败
");//确认文件打开
exit(1);
}
for(i=0;i<3;i++)
{
fscanf(fp,"%d",&t); //这里使用的应该是fscanf,而不是scanf
sum=sum+t;

}
fclose(fp);
printf("%d",sum); //这里应该这么写,先前的printf(sum); 写法是错的
return 0;

#include <stdio.h>
#include <math.h>
int main()
{
    FILE* fp;
    fp = fopen("data1.txt", "a+");
    int i, j, flag, m;
    for (i = 2; i <= 1000; i++)
    {
        flag = 1;
        for (j = 2; j <= sqrt(i); j++)
        {
            if (i % j == 0)
                flag = 2;
        }
        if (flag == 1)
        {
            fprintf(fp, "%d ", i);
        }
    }
    rewind(fp);
    while (!feof(fp))
    {
        fscanf(fp, "%d", &m);
        printf("%d ", m);
    }
    fclose(fp);
}



主要问题:
开始输出素数时,文件指针在文件末尾,在重新读入素数之前应该将文件指针重新移到起始位置,可在while语句前插入:
rewind(fp);

你这个程序 想从文件中读取什么?把符合要求的i值写入文件?


c语言链表文件读取问题
printf("open file failure");return head;} \/\/然后开始读取文件,放到new的buf中 if(fread(new->buf,BUFSIZE,1,fp)<1){ \/\/如果读取失败,提示,并返回head printf("read file failure");return head;} fclose(fp);\/\/文件读取完后,进行链表操作 if(!head)\/\/如果传进来的head是个空指针,那...

c语言如何读取文件并输出
fprintf(fp2,"%d",a);//向输出文件写入一个整数 fclose(fp1);//关闭输入文件 fclose(fp2);//关闭输出文件,相当于保存 return0;} C语言中使用fopen()函数实现文件的读取,使用fgetc()函数读取文件中的字符,使用fclose()实现文件的关闭,注意:打开文件流必须要关闭文件流,...

关于C语言中文本文件的逐行读取的实现
C语言中文本文件的逐行读取的实现的代码如下:include<stdio.h> main(){ FILE * fp;fp=fopen(“noexist”,”a+”);if(fp= =NULL) return;fclose(fp);}

求标准C语言读写文件的源代码
C语言读写文件 都是三个步骤 1.获取文件描述符 2.对文件读写 3.关闭文件 对文件读操作 \/\/获取文件指针FILE *pFile = fopen("1.txt","w"); \/\/ 文件打开方式 如果原来有内容也会销毁\/\/向文件写数据fwrite ("hello", \/\/要输入的文字 1,\/\/文字每一项的大小 以为这里是字符型的 就设置...

C语言文件的读写问题
\/\/读N个 void read(CAR car[], int N){ FILE *fp;int i;if((fp=fopen("in.txt","r"))==NULL){ printf("cannot open file\\n"); exit(0);} for(i=0;i<N;i++){ fscanf(fp,"%[^,],%d,%d,%d,%d,%d,%d,%d",car[i].number,&car[i].in[0],&car[i].in[1],&car...

c语言读取文件名问题
=NULL) { printf("%s\\n",entry-> d_name); } closedir(directory_pointer); } system("PAUSE"); return 0;}3、如果没有dirent.h,可以使用io.h头文件中声明的_findfirst(),_findnext()函数;示例代码:int main(int argc, char *argv[]){ long file; struct _fin...

C语言读取文件内容,按行读
C语言逐行读取文件内容 ,参考代码如下:include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_LINE 1024int main(){ char buf[MAX_LINE]; \/*缓冲区*\/ FILE *fp; \/*文件指针*\/ int len; \/*行字符个数*\/ if((fp = fopen("test.txt","r")) == NULL) { ...

c语言文件读取十六进制数据问题,例如文件中数据是: 0x7...
include <stdio.h> int main(void){ int s;int a,b,c;s=0x781523;a=((0xff<<16)&s)>>16;b=((0xff<<8)&s)>>8;c=((0xff<<0)&s)>>0;printf("0x%x\\n",a);printf("0x%x\\n",b);printf("0x%x\\n",c);}

c语言,怎么从文件读取数据到结构体,求助
实现读取文件并保存到结构体代码:#include<stdio.h> #include<stdlib.h> //文件操作格式化读取保存到结构体数组 #defineBUFSIZE1000 structdata { charG[4];floatXs;//起点坐标 floatYs;floatE;};intmain(){ FILE*fp;inti,j,r_n=0;charbuf[BUFSIZE],c;//打开...

请教用C语言按要求读取文件中字符的代码,谢谢!
{ char filename[256]={0};char buf[10240]={0};char newname[128]={0};printf("请输入文件名:");gets(filename);FILE *rfp=fopen(filename,"rb");if(rfp==NULL){printf("文件[%s]打不开",filename);exit(-1);} strcpy(newname,filename);strcat(newname,".txt");FILE*wfp =...

西夏区15328141288: C语言中读取文件的问题 -
昔通科曼: 字符串是在真正内容之后再加一个零字符'\0'.对于你的这个要求,你需要将字符数组定义为a[3],并始终令a[2]这个元素等于'\0'.

西夏区15328141288: C语言文件读取代码问题 -
昔通科曼: 主要问题:开始输出素数时,文件指针在文件末尾,在重新读入素数之前应该将文件指针重新移到起始位置,可在while语句前插入:rewind(fp);

西夏区15328141288: C语言中 文件的读取 -
昔通科曼: 示例程序.//---------------------------------------------------------------------------#include <stdio.h>int main(void) {FILE *fp;double u[20];int i; fp=fopen("c:\\a.txt","r"); /*打开要读取数字的文件*/for (i = 0; i<20; i++) { /*打开的从文件中读取20个数字*...

西夏区15328141288: C语言关于文件的读写问题? -
昔通科曼: 你可以这样:fscanf(pfile, "%s:", name);这样读取的时候只要读到:就会停下, 相当于是一个分隔符.

西夏区15328141288: C语言文件读取问题 -
昔通科曼: 手头没编译器,不好改 ,不过if((fp=fopen("d:\c.txt","r"))==NULL) 这部分应该为if((fp=fope("d:\\c.txt","r"))==NULL) 为双反斜杠,因为\是控制符 ,区别与\n等

西夏区15328141288: 关于C语言读取文件内容的问题 -
昔通科曼: #include<stdio.h>#define N 5 void main() { FILE *fp; char a[N][10],buffer[10]; int i,n; n=0; if ( fp=fopen("data.txt","r") ) { while ( !feof(fp) ) { fgets(buffer,10,fp); sscanf(buffer,"%s",a[n]); n++; if ( n>=N ) break; } fclose(fp); for ( i=0;i<n;i++ ) printf("%s\n",a[i]); } else printf("无法打开文件读取数据.\n"); }

西夏区15328141288: C语言读入写出文件,写出文件时出现个别乱码. -
昔通科曼: 出问题的原因是你ftell得到的长度和你fread实际读到的字节数不符,原因是windows把回车看作/r/n2个字符,ftell读的时候也按2个算,但是fread读的时候却算一个,就是\n ,这就导致你fwrite的时候比你fread到的要多. 解决办法就是你可以定义一个额外的整数n来记录读到的字符数,并把下面2句改成这样: /*把文件拷贝到buffer中*/n=fread(buffer,1,lSize,pFile);/*写入新文件中*/fwrite(buffer,1,n,newFile);你可以先不改然后把测试文件内容删到只剩下一行,就不会出这个问题

西夏区15328141288: c语言从文件中读取数据的问题 -
昔通科曼: 我想应该没错了但我的编译器是新版 不能测试#include<stdio.h> int main() { int a[10]; int i = 0, j, max, min; FILE*inptr; inptr = fopen("test.txt", "r+");while (fscanf(inptr, "%d", &a[i]) != EOF) i++;for (j = 0; j < 10; j++) { //在这边你没加上{} 所...

西夏区15328141288: c语言读取文件名问题 -
昔通科曼: C语言中有两个格式化读写文件的函数,先将文件g_name.out中的内容格式化读取到链表或者数组中,然后遍历链表或者数组,依次取得每个数据文件名,再根据读取到的文件名读取数据文件.

西夏区15328141288: C语言读文件小问题 -
昔通科曼: 这是完整代码,本机运行满足你的说明要求.#include#include#define SIZE 1024const char* str1 = "\"2004/Feb/24\"";const...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网