2 回答

TA貢獻1858條經(jīng)驗 獲得超8個贊
自己對比下吧...............
#include<stdio.h>
void main()
{
FILE *fp = NULL;
int number[4] = {};
if (fp = fopen("e:\\1.txt", "r"))
{
for (int i = 0; i < 4; i++)
fscanf(fp, "%*[^=]=%d", number+i);
fclose(fp);
printf("%d, %d, %d, %d\n", number[0], number[1], number[2], number[3]);
}
return;
}
..................................................................
最主要的原因,你那個for里面雖然有用 i 來控制次數(shù),可fgets和sscanf里面根本就沒用 i ,一直在往同一地址寫數(shù)據(jù),其他細節(jié)我就不多說了.....

TA貢獻1942條經(jīng)驗 獲得超3個贊
在C語言中,文件操作都是由庫函數(shù)來完成的。
要讀取一個txt文件,首先要使用文件打開函數(shù)fopen()。
fopen函數(shù)用來打開一個文件,其調(diào)用的一般形式為: 文件指針名=fopen(文件名,使用文件方式) 其中,“文件指針名”必須是被說明為FILE 類型的指針變量,“文件名”是被打開文件的文件名。 “使用文件方式”是指文件的類型和操作要求?!拔募笔亲址A炕蜃址當?shù)組。
其次,使用文件讀寫函數(shù)讀取文件。
在C語言中提供了多種文件讀寫的函數(shù):
·字符讀寫函數(shù) :fgetc和fputc
·字符串讀寫函數(shù):fgets和fputs
·數(shù)據(jù)塊讀寫函數(shù):freed和fwrite
·格式化讀寫函數(shù):fscanf和fprinf
最后,在文件讀取結束要使用文件關閉函數(shù)fclose()關閉文件。
下面以格式化讀寫函數(shù)fscanf和fprintf為例,實現(xiàn)對文件A.txt(各項信息以空格分割)的讀取,并將它的信息以新的格式(用制表符分割各項信息)寫入B.txt,實現(xiàn)對A.txt的處理。
C語言源程序如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct student{
char name[32];
int no;
char sex[16];
float score;
} stu;
int main(int argc, char* argv[])
{
//打開文件
FILE * r=fopen("A.txt","r");
assert(r!=NULL);
FILE * w=fopen("B.txt","w");
assert(w!=NULL);
//讀寫文件
stu a[128];
int i=0;
while(fscanf(r,"%s%d%s%f",a[i].name,&a[i].no,a[i].sex,&a[i].score)!=EOF)
{
printf("%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//輸出到顯示器屏幕
fprintf(w,"%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//輸出到文件B.txt
i++;
}
//關閉文件
fclose(r);
fclose(w);
system("pause");
return 0;
}
- 2 回答
- 0 關注
- 156 瀏覽
添加回答
舉報