c語言文件讀取數字
使用字元讀取函數getchar即可。
1、getchar(),從stdio流中讀字元,C語言標准庫中它實際上是getc(stdin)。
#define getchar() getc(stdin)
函數從標准輸入里讀取下一個字元。返回類型為int型,返回值為用戶輸入的ASCⅡ碼,出錯返回-1。
2、示例如下:通過getchar()輸入字元,用putchar()輸出,直到文件結束(在windows上按CTRL+Z相當於EOF)。
#include<stdio.h>
intmain()
{
charc;
while((c=getchar())!=EOF){
putchar(c);
}
return0;
}
⑵ 從文本文件里讀取數字,c語言如何實現
voidmain()
{
FILE*fin;
inta,b,c,d;
chars[20];
floatf1,f2,f3,f4;
fin=fopen("abc.txt","r");//打開
fscanf(fin,"%1d%1d%1d%1d",&a,&b,&c,&d);//按1位整型讀前4個數
printf("a=%db=%dc=%dd=%d ",a,b,c,d);
rewind(fin);//文件回繞到開始處
fscanf(fin,"%s",s);//按字元串讀一串
printf("s=%s ",s);
rewind(fin);//文件回繞到開始處
fscanf(fin,"%1f%1f%1f%1f",&f1,&f2,&f3,&f4);//按1位float型讀前4個數
printf("%f%f%f%f ",f1,f2,f3,f4);
flcose(fin);
}
abc.txt內容:
123456789
讀到數組:
inty[20];
inti;
fin=fopen("abc.txt","r");
for(i=0;i<9;i++)fscanf(fin,"%1d",&y[i]);
(2)c語言文件讀取數字擴展閱讀
C語言中文件的讀取
fopen(打開文件)
相關函數open,fclose
表頭文件#include<stdio.h>
定義函數FILE*fopen(constchar*path,constchar*mode);
函數說明參數路徑包含包含打開的文件路徑和文件名,參數模式字元串則代表著流形態。
模式有以下幾種形態類別:
r:預期文件,該文件必須存在。
r+:可讀寫的文件,該文件必須存在。
w:只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+:可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a以附加的方式打開只寫文件。若文件不存在,則建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。
⑶ C語言讀取文件如何直接將文件中的數字讀成int型的數字
通用方法是使用sscanf,例如
#include <stdio.h>
int main()
{
char s1[]="12345",s2[]="-123.456";
int a;
float b;
sscanf(s1,"%d",&a);
sscanf(s2,"%f",&b);
printf("%d %.3f ",a,b);
return 0;
}
⑷ C語言如何從文本文件中讀出數字來
#include<stdio.h> void main() { FILE *fp; int line[1024]; int j=0; char ch; fp=fopen(1.txt,"r"); ch=fgetc(fp); while(!feof) { line[j]=ch; j++; ch=fgetc(fp); } sscanf(line[j],"%s[^%d]",buf); printf("%s\n",buf); }
採納哦
⑸ 用c語言提取字元串中的數字
用c語言提取字元串中的數字的操作如下:
1、首先打開visual studio軟體並創建一個新的c語言文件,如下所示。
⑹ 如何用c語言從txt文件中讀取數據
//其中的in.txt就是你要讀取數據的文件,當然把它和程序放在同一目錄
-------------------------------------
#include
<stdio.h>
int
main()
{
int
data;
file
*fp=fopen("in.txt","r");
if(!fp)
{
printf("can't
open
file\n");
return
-1;
}
while(!feof(fp))
{
fscanf(fp,"%d",&data);
printf("%4d",data);
}
printf("\n");
fclose(fp);
return
0;
}
⑺ C語言讀取文件中的數字
括弧位置錯了,==優先順序比=高先執行,如果成功打開文件,fopen返回的不是NULL,所以和NULL比較結果為0,然後fp被賦為0,所以實際上沒有讀到內容 #include <stdio.h> main() { int a; char *i; FILE *fp; if((fp=fopen("ANT.IN","r"))==NULL)/*這里修改一下*/ { printf("File can not open!"); exit(1); } fgets(i,256,fp) ; fclose(fp); a=atoi(i); printf("%d",a); }
⑻ C語言 讀取數字
首先建議將數字的分隔符改為",",因為控制台讀取是以「空格、製表符、回車」來判斷結束的。如果一定要用空格來間隔,就需要固定輸入項數,可以將之讀到一個數組中來解析,這似乎很不方便。下面這個例子是改用","來分隔輸入的數字,括弧內向下循環對對應下標的數組項賦值,完全符合你的要求,最大值是設為99,當然你可以方便地改為12,.cpp文件代碼如下:
(因是粘貼上的,網路的輸入框又小,代碼排列可能需要你微調!)
(本例對於輸入數字的重復問題未做專門處理,如有必要,你自己嘗試一下啦,搞不定再說!)
//====================================================================
// .cpp : 定義控制台應用程序的入口點。
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
//例子用到的變數
bool bCont = true;
int iFlag = 0;
char cInput[1024];
int iMax = 0;
int iTmpArray[100]; //臨時數組
int iObiArray[100]; //目的數組
int iIndex = 0; //記錄iTmpArray的未賦值項的最小下標
//例子用到的輔助函數
void InitArr(bool bFlag) //數組初始化,參數為1時兩個數組都執行,
//0時執行臨時數組
{
if (bFlag)
{
for (int i = 0; i < 100; i++)
{
iTmpArray[i] = -1;
iObiArray[i] = -1;
}
}
else
{
for (int i = 0; i < 100; i++)
{
iTmpArray[i] = -1;
}
}
}
//字串格式判定
bool CheckFormat()
{
if (cInput[0] == 'Q' || cInput[0] == 'q')
{
exit(0);
}
if (cInput[0] == 'H' || cInput[0] == 'h')
{
cout << "\n【本 例 幫 助】" << endl;
cout << "1、本例最大值(非0)限制在兩位數以內!" << endl;
cout << "2、數字串輸入格式舉例:(12,2,0,8)(3,7)(5,4,9)" << endl;
cout << "3、數字串中數字值不能超過最大值!" << endl;
cInput[0] = NULL;
iFlag = 0;
return FALSE;
}
int length = (int)strlen(cInput);
if (cInput[0] != 40 || cInput[length - 1] != 41)
{
printf("\n【錯誤:輸入格式錯誤!】\n");
return false;
}
for (int i = 0; i < length; i++)
{
if (cInput[i] < 48 || cInput[i] > 57)
{
if (cInput[i] != 44 && cInput[i] != 40 && cInput[i] != 41)
{
printf("\n【錯誤:輸入了非法字元!】\n");
return false;
}
}
}
return true;
}
//解析數字串
BOOL Analysis()
{
int length = (int)strlen(cInput);
for (int i = 0; i < length; i++) //遇到"("或","開始從下一位讀數
{
if (cInput[i] == 44 || cInput[i] == 40)
{
if (iIndex <= iMax)
{
int iTmp = atoi(&cInput[i+1]);
if (iTmp > iMax)
{
printf("\n【錯誤:輸入的數字超過最大值!】\n");
return false;
}
iTmpArray[iIndex] = iTmp;
iIndex++;
}
else
{
printf("\n【錯誤:數組填充溢出,可能是輸入的數字個數超過最大值規定的數組容量!】\n");
return false;
}
}
else if (cInput[i] == 41) //讀到")"結束本段讀數,並進行處理
{
//括弧內循環對目的數組賦值
for (int k = 0; k < iIndex; k++)
{
iObiArray[iTmpArray[k]] = iTmpArray[k+1];
if (k == iIndex - 1)
{
if (iTmpArray[k+1] != -1)
{
printf("\n程序運行錯誤!\n");
return false;
}
else
{
iObiArray[iTmpArray[k]] = iTmpArray[0];
}
}
}
InitArr(0);
iIndex = 0;
}
}
return true;
}
int _tmain(int argc, _TCHAR* argv[])
{
InitArr(1);
ZeroMemory(cInput,sizeof(cInput));
cInput[0] = NULL; //防止輸入0時阻塞
cin.clear();
cin.sync();
while(bCont)
{
switch (iFlag)
{
case 0: //輸入最大值范圍
printf("\n【Q退出 H幫助】請輸入菜單碼或最大值:");
cin >> cInput;
iFlag = 1;
break;
case 1: //最大值范圍校驗
if (cInput[0] == 'Q' || cInput[0] == 'q')
{
exit(0);
}
if (cInput[0] == 'H' || cInput[0] == 'h')
{
cout << "\n【本 例 幫 助】" << endl;
cout << "1、本例最大值(非0)限制在兩位數以內!" << endl;
cout << "2、數字串輸入格式舉例:(12,2,0,8)(3,7)(5,4,9)" << endl;
cout << "3、數字串中數字值不能超過最大值!" << endl;
cInput[0] = NULL;
iFlag = 0;
break;
}
if (cInput[0] < '1' || cInput[0] > '9' || strlen(cInput) > 2)
{
cin.clear();
cin.sync();
ZeroMemory(cInput,128);
cInput[0] = NULL;
cout << "\n輸入格式錯誤,請重新輸入:";
cin >> cInput;
break;
}
iMax = atoi(cInput);
if (iMax > 99)
{
cin.clear();
cin.sync();
ZeroMemory(cInput,sizeof(cInput));
cInput[0] = NULL;
cout << "\n最大值超界,請重新輸入:";
cin >> cInput;
break;
}
else iFlag = 2;
break;
case 2: //輸入數字串並檢查格式
cin.clear();
cin.sync();
ZeroMemory(cInput,sizeof(cInput));
cInput[0] = NULL;
printf("\n【Q退出 H幫助】請在最大值(%d)以內按格式(,,,)\n輸入要填充數組的數字:", iMax);
cin >> cInput;
if (CheckFormat()) iFlag = 3;
break;
case 3: //數字串解析並填充數組
if (Analysis())
{
printf("\n輸入內容排列後輸出:");
//這里直接變換並輸出數值,不再對數組進行完整賦值
for (int i = 0; i <= iMax; i++)
{
if (iObiArray[i] == -1)
{
cout << i;
}
else
{
cout << iObiArray[i];
}
if (i < iMax)
{
cout << " ";
}
if (i == iMax)
{
cout << endl;
}
}
InitArr(1);
iIndex = 0;
iFlag = 0;
}
else
{
iFlag = 2;
InitArr(1);
iIndex = 0;
}
break;
}
}
return 0;
}
⑼ C語言中怎麼從文本文件里以不同的格式讀取數字
void
main()
{
FILE
*fin;
int
a,b,c,d;
char
s[20];
float
f1,f2,f3,f4;
fin
=
fopen("abc.txt","r");
//
打開
fscanf(fin,"%1d%1d%1d%1d",&a,&b,&c,&d);
//
按1位整型讀前4個數
printf("a=%d
b=%d
c=%d
d=%d\n",a,b,c,d);
rewind(fin);
//
文件回繞到開始處
fscanf(fin,"%s",s);
//
按字元串讀一串
printf("s=%s\n",s);
rewind(fin);
//
文件回繞到開始處
fscanf(fin,"%1f%1f%1f%1f",&f1,&f2,&f3,&f4);
//
按1位float型讀前4個數
printf("%f
%f
%f
%f\n",f1,f2,f3,f4);
flcose(fin);
}
abc.txt
內容:
123456789
讀到數組:
int
y[20];
int
i;
fin
=
fopen("abc.txt","r");
for
(i=0;i