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