當前位置:首頁 » 編程語言 » c語言fscanf函數的用法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言fscanf函數的用法

發布時間: 2022-01-16 07:24:24

⑴ 關於c語言讀取文件及fscanf函數的問題

函數名: fscanf

功 能: 從一個流中執行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束。這與fgets有區別,fgets遇到空格不結束。

返回值:整型,成功返回讀入的參數的個數,失敗返回EOF(-1)。

用法:

1 int fscanf(FILE*stream,constchar*format,[argument...]);

FILE *stream:文件指針;

char *format:格式字元串;

[argument...]:輸入列表。

例如:

FILE* fp;
char a[10];
int b;
double c;
fscanf(fp , "%s %d %lf" , a , &b , &c);
和scanf一樣,格式化串的空格不代表讀取的子串有空格,存放讀取數據的參數都是指針。

擴展閱讀,C語言中文件的讀取和寫:
FILE *pFile=fopen("1.txt","r"); //獲取文件的指針
char *pBuf; //定義文件指針
fseek(pFile,0,SEEK_END); //把指針移動到文件的結尾 ,獲取文件長度
int len=ftell(pFile); //獲取文件長度
pBuf=new char[len+1]; //定義數組長度
rewind(pFile); //把指針移動到文件開頭 因為我們一開始把指針移動到結尾,如果不移動回來 會出錯
fread(pBuf,1,len,pFile); //讀文件
pBuf[len]=0; //把讀到的文件最後一位 寫為0 要不然系統會一直尋找到0後才結束
MessageBox(pBuf); //顯示讀到的數據
fclose(pFile); // 關閉文件

⑵ c語言 fscanf函數使用

沒打看懂你說的什麼意思, 只是感覺你寫的有個地方有問題,你在往文件中寫的時候fprintf(f1,"%d\n",temp);是每個字後面都一個回車, 而在讀的時候又按照fscanf(f1,"%d",&temp); 這種沒有回車的形式讀的 ,當然會出問題了, 我幫著改了一下, 你看下行不...

#include <stdio.h>
#include <stdlib.h>

void main()
{
int i;
char temp;
FILE *f1; // source file (bmp)
if((f1=fopen("write.hex","w"))==NULL)
{
printf("f1 error\n");
exit(0);
}
for (i=0;i<8;i++)
{
temp = i;
fprintf(f1,"%d",temp);
}
fclose(f1);
if((f1=fopen("write.hex","r"))==NULL)
{
printf("f1 error\n");
exit(0);
}
for (i=0;i<100;i++)
fscanf(f1,"%d",&temp);
fclose(f1);
}

⑶ 關於C語言中fscanf()函數如何讀入文件中下一行的數據!!

錯誤
1.你的文件里的逗號是中文字元,
2.char * Non_H_atom[7];
這你只是定義了一個字串指針,沒有分配空間,
如你要使用就要先分配空間給他,除了剛定義時可以直接賦值。
如char * Non_H_atom[7]={"aa","bb",....;}

改成
#include<stdio.h>
#include<string.h>

int main()
{ int Comp_Name;
int Ring_Num;
int N_H_Num;
int i;
FILE * fp;
int Bond_Num;
char *Non_H_atom[7];

if((fp=fopen("inoutdat.txt","r"))== NULL)
{ printf("Cannot open file.\n");
exit(0);
}
fscanf(fp,"%d,%d,%d",&Comp_Name,&N_H_Num,&Ring_Num);
printf("%d, %d, %d\n",Comp_Name,N_H_Num,Ring_Num);

Bond_Num=Ring_Num+N_H_Num-1;
printf("Bond_Num=%d\n",Bond_Num);

for(i = 0;i<N_H_Num;i++)
{
Non_H_atom[i]=(char *)malloc(5);
fscanf(fp,"%s,",Non_H_atom[i]);
}

for(i = 0;i<N_H_Num;i++)
{ printf("%s",Non_H_atom[i]);
free(Non_H_atom[i]);
}

fclose(fp);
system("pause");
}

⑷ C語言中fscanf()函數

fscanf(stdin,"%s%s%s",&s1,&s2,&s3);
C語言中輸入數據,都是要加取地址符的親……

⑸ C語言中fscanf函數的問題

當然會造成隱患 這只能說明 運氣好 後面的內存 訪問不會出錯
有時候程序遇到 這種情況會直接結束 一點錯都不報給你 找BUG找到你頭大。

⑹ 請問C語言fscanf的用法

函數名: fscanf

功 能: 從一個流中執行格式化輸入
用 法: int fscanf(FILE *stream, char *format[,argument...]);

程序例:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int i;
printf("Input an integer: ");
/* read an integer from the
standard input stream */
if (fscanf(stdin, "%d", &i))
printf("The integer read was: %i\n",
i);
else
{
fprintf(stderr, "Error reading an \
integer from stdin.\n");
exit(1);
}
return 0;
}

⑺ c語言中的fscanf()函數

fprintf(fp,"%s,%c,%d,%f",str,a, c, b); 這個輸出格式表明 你的文件1.txt 里的數據 是用 逗號 分 隔。
if((fp = fopen("1.txt","r"))==NULL) 你要打開 讀 這個 用 逗號為 分隔符 的文件。

fscanf(fp,"%s,%c,%d,%f", str, &a, &c, &b);
漏寫 str, 給你補上,但 這仍不能解決 %s, 的逗號分隔問題。

必須 用下面格式讀取逗號分隔的數據:
fscanf(fp,"%[^,],%c,%d,%f", str, &a, &c, &b);
======================================

假如文件里的數據 用 空白 分隔,不用 逗號,日子就好過得多:
fprintf(fp,"%s %c %d %f",str,a, c, b);
fscanf(fp,"%s %c %d %f", str, &a, &c, &b);

⑻ c語言fscanf用法

#include<stdio.h>
#include<stdlib.h>
intmain()
{
FILE*fp;
intid;
charstu;
if((fp=fopen("c:/stu.txt","w+"))==NULL)
{
printf("打開文件,出現錯誤");
exit(1);
}
scanf("%d%s",&id,&stu);
fprintf(fp,"%d %s",id,&stu);
id=0;
stu=0;
rewind(fp);//寫完之後不能馬上讀,需要重置fp到文件頭
fscanf(fp,"%d%s",&id,&stu);//少了&
printf("%d %s",id,stu);
return0;
}

⑼ fscanf的用法

fscanf

簡述:C語言中基本的文件操作

函數名:fscanf

功 能:從一個流中執行格式化輸入,fscanf遇到空格和換行時結束,注意空格時也結束。這與fgets有區別,fgets遇到空格不結束。

返回值:整型,成功返回讀入的參數的個數,失敗返回EOF(-1)。

用法:

FILE *stream:文件指針

char *format:格式字元串

[argument...]:輸入列表

格式字元說明

常用基本參數對照:

%d:讀入一個十進制整數.

%i :讀入十進制,八進制,十六進制整數,與%d類似,但是在編譯時通過數據前置或後置來區分進制,如加入"0x"則是十六進制,加入"0"則為八進制。例如串"031"使用%d時會被算作31,但是使用%i時會算作25.

%u:讀入一個無符號十進制整數.

%f %F %g %G : 用來輸入實數,可以用小數形式或指數形式輸入.

%x %X: 讀入十六進制整數.

%o': 讀入八進制整數.

%s : 讀入一個字元串,遇空字元''結束。

%c : 讀入一個字元。無法讀入空值。空格可以被讀入。

附加格式說明字元表修飾符說明

L/l 長度修飾符 輸入"長"數據

h 長度修飾符 輸入"短"數據

示例說明

如果要求從標准輸入中輸入一串字元串和一個整型數,那麼參數"%s%d"表示什麼呢?默認情況下,在終端上(這里假設程序為控制台應用程序)輸入第一個參數的值的時候敲下回車,則在第二行輸入的為第二個參數值,採用這種輸入方法那麼格式字元的形式就無關緊要了。[1]

這里要特殊說明的是如果參數在同一行給出,那麼格式字元的參數與終端的輸入會有什麼關系。舉個例子:如果格式字元為"%s+%d",那麼參數的輸入就應該為 string + integer。