C语言给我们提供了丰富的输入输出方法,但是当我们需要读取多行由空格和空行分割的数据,并且每行数据的数量不确定时,貌似没有直接可以用的方法。
例如,将以下数据读入一个二维数组:
4
0 -2 -7 0 9 2 -6 2
-4 1 -4 1 -1
8 0 -2
第一行是二维数组的维数,接下来的四行是按行的输入数据,其中包含一个空行,我们需要将这些数据读入到一个二维数组中,直接使用scanf,fscanf,sscanf都不行,下面采用的方法是fgets读取每行,然后再逐个数据解析的方法:
#include<stdio.h>
int main()
{
//variables definition
int a[101][101];
char str[2000];
int g=1,h=1,count=0,len,s,n,i;
scanf("%d",&n);
while(fgets(str,100,stdin)!=NULL)
{
i=0;
s=0;
while(str[i]!='\0')
i++;
len=i-2;
while(s<=len)
{
i=s;
while((str[s]<='9'&&str[s]>='0')||str[s]=='+'||str[s]=='-')
s++;
a[g][h]=atoi(str,i,s-1);
count++;
h++;
if(h>n)
{
h=1;
g++;
}
if(g>n)
break;
while(s<=len&&str[s]!='+'&&str[s]!='-'&&!(str[s]<='9'&&str[s]>='0'))
s++;
}
if(count>=n*n)
break;
}
}
int atoi(char* num,int s,int e)
{
int result=0,flag=0;
if(s>e||num==NULL)
{
printf("Error!\n");
return;
}
if(num[s]=='-')
flag=1;
if(num[s]=='+'||num[s]=='-')
s++;
while(s<=e)
{
if(num[s]<='9'&&num[s]>='0')
result=result*10+(num[s]-'0');
else
{
printf("Error!\n");
return;
}
s++;
}
if(flag)
result=result*(-1);
return result;
}
atoi方法还有好多没有考虑的地方,不过在一般的读取应该是够用了。
分享到:
相关推荐
在LabVIEW编程环境中,二维数组是一种常见的数据结构,用于存储多行多列的数据。本教程将深入探讨如何在LabVIEW中有效地读取二维数组的所有数据,这对于数据分析、处理和可视化至关重要。 首先,让我们理解二维数组...
本教程将重点讲解如何使用C++将一维和二维数组的数据写入文本文件(txt),以及如何从txt文件中读取数据并存储到一维和二维数组中。数组在C++中是基本的数据结构,而指针则为动态操作提供了便利。以下是一些关键知识...
在C语言中,二维数组是处理表格数据的一种基础方式,它本质上是一组一维数组的集合,每个一维数组代表数组的一行。本编程练习旨在加深对C语言中二维数组、指针和函数的理解,通过实际操作提升编程技能。下面我们将...
在这个“读取二维数组的数据”的案例中,我们将深入探讨如何使用LabVIEW来操作和处理二维数组。 首先,二维数组在计算机科学中是一种数据结构,它是由多个一维数组排列而成的,可以理解为表格形式的数据存储,通常...
在C#编程中,一维数组到二维数组的转换是一个常见的操作,特别是在处理表格数据或者在Windows Forms(WinForm)应用程序中创建控件布局时。本篇将详细讲解如何进行这种转换以及如何保存二维数组的数据。 首先,让...
4. **生成新数据**:将插值后的值插入到原有的二维数组中,创建一个新的二维数组。 5. **写入TXT文件**:使用编程语言提供的功能,将更新后的二维数组以TXT格式写回文件。可以设定合适的输出格式,如逗号分隔值(CSV...
用于无人机影像处理读取外方为元素到数组,实现文本文件读入,并制作成二维数组 ,分两种情况,以逗号分隔,和以不定数目空格进行分隔。
在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来读取位图文件的像素数据,并将其存储到二维数组中。接着,我们将介绍如何将这些数组中的像素重新绘制为位图,以及如何将像素点的值写入文本...
在LabVIEW中,二维数组是数据处理和分析中常见的数据结构。它由多个一维数组按行或列堆叠而成,可以表示表格或其他多维数据。本教程将深入探讨如何在LabVIEW中对二维数组进行排序,这在处理实验数据、进行算法分析或...
“子_数据到二维数组”可能是指将从数据源读取的原始数据转换成适合在二维数组中存储的格式。这一步可能涉及数据类型转换、数据结构构建等操作。在易语言中,由于其独特的语法特性,这一过程可能涉及到易语言特有的...
// 读取64位明文数据和56位密钥到data和key数组 // ... // 密钥扩展 for (int round = 0; round ; round++) { // PC-1置换和循环左移 // ... // PC-2置换 // ... } // 迭代过程 for (int round = 0; round ; ...
在C语言中,二维数组是一种特殊的数据结构,它允许我们存储多行多列的数据,类似于表格形式。在上述代码中,我们看到一个简单的例子,展示了如何声明、初始化、输入和输出一个二维数组。以下是关于二维数组及其在...
在计算机科学中,二维数组是一种数据结构,它在内存中存储的是一个矩形表格形式的数据集合,通常用于表示矩阵。矩阵是数学中一种重要的线性代数概念,由一系列数字按照行和列排列而成,可以进行多种数学运算,如加法...
- 文件读写:二维数组用于处理二维数据的文件读取和写入。 在“C++二维数组编程实例.zip”中,提供的实例可能涵盖以上提到的一些概念,通过实践这些实例,你可以更直观地理解二维数组的用法,并提高编程能力。记得...
程序功能:从三维数组中提取出任意二维的数据,并保存在新的二维矩阵中,且能所以变换顺序。
总结,`CStringArray`二维数组的定义和操作主要包括定义新类型、动态创建子数组并插入数据以及遍历和读取数据。在实际使用中,还需要考虑内存管理,确保在不再使用子数组时释放它们占用的内存。此外,对于更复杂的...
在实际应用中,这个方法可以扩展到更复杂的系统,将实际的传感器或执行器的输入信号映射到输入变量,然后通过程序处理这些信号,更新二维数组的对应位置。这使得我们能够轻松管理和控制大量的IO点,同时保持代码的...
在Java编程中,将二维数组保存到文本文件并进行读取是常见的数据持久化操作。这个过程涉及到文件I/O操作,主要包括字符流和字节流的使用。下面将详细讲解如何实现这一功能。 首先,我们需要创建一个二维数组,例如...
### 把真彩色BMP位图转化为二维数组 在计算机编程与图像处理领域,将BMP格式的位图转换为二维数组是一项非常实用的技术。这种技术不仅能够帮助开发者更好地理解和操作图像数据,还在诸如机器人视觉识别等应用中扮演...
在这个例程中,我们将探讨如何从文本文件(如`test.txt`)中读取数据,并将其存储到三维数组中,这对于数据分析、数学建模或任何需要处理大量结构化数据的场景都非常有用。下面我们将详细讲解这个过程涉及的步骤和...