`
SaraWon
  • 浏览: 42841 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

C读取多行不定数量整型数据到二维数组

阅读更多
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方法还有好多没有考虑的地方,不过在一般的读取应该是够用了。
分享到:
评论

相关推荐

    c程序将表格数据读取到二维数组

    "C 语言读取 Excel 表格数据到二维数组" C 语言是一种广泛使用的编程语言,它可以用于读取 Excel 表格数据并将其存储到二维数组中。下面我们将详细介绍如何使用 C 语言实现此功能。 标题解释 "c 程序将表格数据...

    读取二维数组所有数据_labview_读取二维数组_

    在LabVIEW编程环境中,二维数组是一种常见的数据结构,用于存储多行多列的数据。这篇教程将深入探讨如何在LabVIEW中有效地读取二维数组的所有数据。LabVIEW,全称为Laboratory Virtual Instrument Engineering ...

    C语言二维数组编程练习

    在C语言中,二维数组是处理表格数据的一种基础方式,它本质上是一组一维数组的集合,每个一维数组代表数组的一行。本编程练习旨在加深对C语言中二维数组、指针和函数的理解,通过实际操作提升编程技能。下面我们将...

    读取二维数组的数据.zip

    在这个“读取二维数组的数据”的案例中,我们将深入探讨如何使用LabVIEW来操作和处理二维数组。 首先,二维数组在计算机科学中是一种数据结构,它是由多个一维数组排列而成的,可以理解为表格形式的数据存储,通常...

    Q1064245.zip c#winform如何实现一维数组转二维数组并保存在某处

    在C#编程中,一维数组到二维数组的转换是一个常见的操作,特别是在处理表格数据或者在Windows Forms(WinForm)应用程序中创建控件布局时。本篇将详细讲解如何进行这种转换以及如何保存二维数组的数据。 首先,让...

    java 将一个二维数组存到txt文件里,然后再读取

    例如,在本例中,我们需要将一个二维数组中的数据写入到TXT文件中,然后再次从该TXT文件中读取这些数据。此过程涉及到两个主要的操作:写入(输出)和读取(输入)。本文将详细解释如何实现这一功能,并提供完整的...

    TIA博途-使用AT指令实现IO点位映射到二维数组中-全局FB库文件-V17版本-GF-二维数组IO点位映射.zip

    在PLC编程中,二维数组常用于处理矩阵或表格形式的数据,如传感器阵列的读取或控制多路电机的状态。 5. **全局FB库文件**: 全局功能块(FB)库文件是TIA博途中的一种模块化编程工具。FBs是一组预定义的程序块,可以...

    VBA二维数组重定义

    在Excel VBA编程中,二维数组是一个非常重要的概念,它允许我们存储和处理多行多列的数据,类似于电子表格中的工作表。本教程主要聚焦于如何在VBA中对已声明或已初始化的二维数组进行重定义,以适应不同的数据需求。...

    MFC读位图像素到二维数组,将数组中像素显示位图.zip

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来读取位图文件的像素数据,并将其存储到二维数组中。接着,我们将介绍如何将这些数组中的像素重新绘制为位图,以及如何将像素点的值写入文本...

    c# 将文本文件保存的数据读入二维数组代码

    用于无人机影像处理读取外方为元素到数组,实现文本文件读入,并制作成二维数组 ,分两种情况,以逗号分隔,和以不定数目空格进行分隔。

    易语言二维数组分页

    “子_数据到二维数组”可能是指将从数据源读取的原始数据转换成适合在二维数组中存储的格式。这一步可能涉及数据类型转换、数据结构构建等操作。在易语言中,由于其独特的语法特性,这一过程可能涉及到易语言特有的...

    C#编写的读取任何版本的Excel文件,并写入二维数组中。

    在C#编程环境中,处理Excel文件是一项常见的任务,无论文件是旧版的XLS格式还是较新的XLSX格式。...以上就是使用C#读取和写入Excel文件到二维数组的基本流程和关键知识点,希望能对你的项目有所帮助。

    实验四 二维数组基本操作的编程实现

    通过这次实验,学生不仅掌握了二维数组的建立、读取数据和压缩存储的基本操作,还学会了如何在实际问题中应用这些操作,比如求阶乘和处理稀疏数组。实验强调了编程实践和理论知识相结合的重要性,有助于提升基础编程...

    LabVIEW二维数组排序.rar

    在LabVIEW中,二维数组是数据处理和分析中常见的数据结构。它由多个一维数组按行或列堆叠而成,可以表示表格或其他多维数据。本教程将深入探讨如何在LabVIEW中对二维数组进行排序,这在处理实验数据、进行算法分析或...

    DES加密算法 C实现 二维数组

    // 读取64位明文数据和56位密钥到data和key数组 // ... // 密钥扩展 for (int round = 0; round ; round++) { // PC-1置换和循环左移 // ... // PC-2置换 // ... } // 迭代过程 for (int round = 0; round ; ...

    C代码之二维数组(数据结构)

    在C语言中,二维数组是一种特殊的数据结构,它允许我们存储多行多列的数据,类似于表格形式。在上述代码中,我们看到一个简单的例子,展示了如何声明、初始化、输入和输出一个二维数组。以下是关于二维数组及其在...

    二维数组计算矩阵相加

    在计算机科学中,二维数组是一种数据结构,它在内存中存储的是一个矩形表格形式的数据集合,通常用于表示矩阵。矩阵是数学中一种重要的线性代数概念,由一系列数字按照行和列排列而成,可以进行多种数学运算,如加法...

    读取文本数据c程序到二维数组

    读取文本数据C程序到二维数组 在计算机编程中,读取文本数据是非常常见的操作,而将这些数据存储在二维数组中则可以便于后续的数据处理和分析。下面我们将详细介绍如何使用C语言读取文本数据并将其存储在二维数组中...

    C++二维数组编程实例.zip

    - 文件读写:二维数组用于处理二维数据的文件读取和写入。 在“C++二维数组编程实例.zip”中,提供的实例可能涵盖以上提到的一些概念,通过实践这些实例,你可以更直观地理解二维数组的用法,并提高编程能力。记得...

Global site tag (gtag.js) - Google Analytics