c语言读取数字的代码(c语言怎么读取文件中的数字)

http://www.itjxue.com  2023-04-04 22:00  来源:未知  点击次数: 

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语言提取字符串中的所有数字

#includestdio.h

int

main()

{

char

str[1000];//保存读取到的字符串

long

sum=0,data[1000];

int

i=0,top=0;

printf("输入字符串:\n");

scanf("%s",str);

while(str[i]!='\0')//未到字符串末尾

{

if(str[i]='0'str[i]='9')//如果是数字

sum=sum*10+(str[i]-'0');//连续数字转换为数.

else

if(sum!=0)//保存这个数

{

data[top++]=sum;

sum=0;

}

i++;

}

if(sum!=0)//判断最后一个字符是否是数

data[top++]=sum;

printf("字符串中的数字是:\n");

i=0;

while(itop)

{

printf("%ld",data[i]);

if(itop-1)//不打印最后一个逗号

printf(",");

i++;

}

printf("\n");

system("pause");

return

0;

}

C语言编程:从字符串中提取数字

1、首先打开visual studio软件,新建一个C语言文件,如下图所示。

2、接着在C语言文件的顶部导入库内容,如下图所示。

3、接着运用scanf函数接收用户输入的字符串。

4、然后利用printf函数打印一下用户输入的内容。

5、运行程序以后就会弹出如下图所示的CMD界面,输入内容就会自动接收到,然后原样输出内容。

6、最后如果接收其他的类型,比如整数,那么类型就需要改变成int,如下图所示,并且scanf里面的接收类型变为d%,提取字符串中的数字。

从文本文件里读取数字,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\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

读到数组:

inty[20];

inti;

fin=fopen("abc.txt","r");

for(i=0;i9;i++)fscanf(fin,"%1d",y[i]);

扩展资料

C语言中文件的读取

fopen(打开文件)

相关函数open,fclose

表头文件#includestdio.h

定义函数FILE*fopen(constchar*path,constchar*mode);

函数说明参数路径包含包含打开的文件路径和文件名,参数模式字符串则代表着流形态。

模式有以下几种形态类别:

r:预期文件,该文件必须存在。

r+:可读写的文件,该文件必须存在。

w:只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

w+:可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a以附加的方式打开只写文件。若文件不存在,则建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

(责任编辑:IT教学网)

更多

推荐PHP+MySQL视频文章