`
SaraWon
  • 浏览: 43508 次
  • 性别: 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方法还有好多没有考虑的地方,不过在一般的读取应该是够用了。
分享到:
评论

相关推荐

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

    在LabVIEW编程环境中,二维数组是一种常见的数据结构,用于存储多行多列的数据。本教程将深入探讨如何在LabVIEW中有效地读取二维数组的所有数据,这对于数据分析、处理和可视化至关重要。 首先,让我们理解二维数组...

    C++一维数组二维数组写入txt,从txt中读取数据存到一维数组二维数组

    本教程将重点讲解如何使用C++将一维和二维数组的数据写入文本文件(txt),以及如何从txt文件中读取数据并存储到一维和二维数组中。数组在C++中是基本的数据结构,而指针则为动态操作提供了便利。以下是一些关键知识...

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

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

    C语言二维数组编程练习

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

    读取二维数组的数据.zip

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

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

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

    VBA二维数组重定义

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

    将二维数组进行线性插值

    4. **生成新数据**:将插值后的值插入到原有的二维数组中,创建一个新的二维数组。 5. **写入TXT文件**:使用编程语言提供的功能,将更新后的二维数组以TXT格式写回文件。可以设定合适的输出格式,如逗号分隔值(CSV...

    LabVIEW二维数组排序.rar

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

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

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

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

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

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

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

    易语言二维数组分页

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

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

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

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

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

    二维数组计算矩阵相加

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

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

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

    Delphi 如何将二维数组数据 以Blob 存入数据库中 并读取 工程

    在 Delphi 开发中,有时候我们需要处理大量的二维数组数据,并将其存储到数据库中。Blob(Binary Large Object)字段类型在数据库中用于存储大块二进制数据,如图像、音频文件或任何其他非文本信息。在本场景中,...

    从三维数组中提取出任意二维的数据,并保存在新的二维矩阵中

    程序功能:从三维数组中提取出任意二维的数据,并保存在新的二维矩阵中,且能所以变换顺序。

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

    在Java编程中,将二维数组保存到文本文件并进行读取是常见的数据持久化操作。这个过程涉及到文件I/O操作,主要包括字符流和字节流的使用。下面将详细讲解如何实现这一功能。 首先,我们需要创建一个二维数组,例如...

Global site tag (gtag.js) - Google Analytics