c++如何读取文本, 每一行存储到一个数组里面?

比如 code.txt 内容
abc
xyz
aaa

如何写一个小程序, 把 abc 存储到一个数组
例如 把 abc 存储到 a[0]
例如 把 xyz 存储到 a[1]

非常感谢!!

1、fopen函数可以读取文件,读到的每一行保存在字符数组中,根据空格作为分隔符进行分割。


2、例程:

#include <stdio.h>
#include <string.h>
#define MAXLINE 3
#define MAXCOLUMN 10
void main(void){
    FILE *fp; //文件指针
    char arr[MAXLINE][MAXCOLUMN]={0};  //定义3行10列的二维数组并初始化
    int i = -1;
    if((fp=fopen("./test/filename.txt","r"))==NULL){ //打开txt文件
        perror("File open error!\n");
        return;
    }
    while((fgets(arr[++i],MAXCOLUMN+1,fp))!=NULL) //读取一行并存到arr数组,百度fgets
        printf("%d: ",i); //打印行号
        //puts(arr[i]);
        char *subarr = strtok(arr[i]," ");  //以空格为分隔符从arr[i]中获得字串,百度strtok
        while(subarr!=NULL){
            data[i][j] = atoi(subarr);  //将字串转为int型数据存入data数组
            printf("%d\t",data[i][j]);  //打印data[i][j
            subarr = strtok(NULL," ");  //继续获得arr[i]中的字串
            j++;  //data数组列加一
        }
        printf("\n");    
    }
    //循环完毕后,所有数据已在data数组中
    printf("\n");
    fclose(fp);  //关闭指针
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-29
#include<iostream>
#include<fstream>
#include<string>
using namespace std;

const unsigned int MAX_LINES = 1024;

int main()
{
    ifstream inFile;
    string tmpStr("");
    string *a = new string[MAX_LINES];
    int index = 0;
    inFile.open("./code.txt", ios::in);
    if (NULL == inFile)
    {
        cout << "文件打开失败!" << endl;
        return 1;
    }
    while (getline(inFile, tmpStr))
    {
        a[index] = tmpStr;
        index += 1;
    }
    for (int j = 0; j < index; j++)
    {
        cout << a[j] << endl;
    }
    delete [] a;
    return 0;
}

本回答被提问者采纳
第2个回答  2013-11-30
FILE *fp
char a[100];
if((fp = fopen("code.txt", "r") )== NULL)
{
cout<<"文件打开失败";
}
else{
for(i=0;!feof(fp);i++)
fscanf(fp,"%s",a[i]);
}

定义文件指针fp,读取code.txt中字符存入字符数组a[i]中,直到文件结束。追问

第一行少了个分号, 但是报错, 不能读

追答

我用输入法的时候没切换中英,你把分号都都更正过来,照着报错提示改是一定可以的。

第3个回答  2013-11-30
#include<iostream>
#include<fstream>
using namespace std;

const int MAX_LINES = 100;
const int MAX_CHARS_PER_LINE = 20;

int main()
{
    char str[MAX_LINES][MAX_CHARS_PER_LINE];
    ifstream ifs("code.txt");
    int i = 0;
    
    while (ifs>> str[i])
    {
        i++;
    }
    
    for (int j = 0; j < i; j++)
    {
        cout<< str[j]<<endl;
    }
    
    system("pause");
}

C\/C++如何读取TXT文件的行数和把TXT文件的内容存到数组中
C语言读取TXT文件的行数并把把TXT文件的内容存到数组中,需要根据每行的内容(字符,数字,字符串)选取fgets、fscanf或者fgets。这里假设每行是一个字符串,每行不超过127个字符(用数组存字符串,最后一位存'\\0'),选取fgets进行读取。示例代码如下:include <stdio.h>#include <stdlib.h>int main...

如何用C++对一个文本文档里面的许多数据进行逐行读取,并放入数组中
推荐使用文件流来读取。如果你的数据是用空格、制表符和换行符来分隔的,那么程序可以写的很简单。直接逐行用fin就可以了。如果你的数据是用逗号或者其他字符来分隔,用换行来分行的,那么你需要在循环中写入两次读入,第一次用于读入数据,第二次用于跳过字符。如果数据中间的分隔字符是不规范、不一致、...

C++如何在文件中读取数据,然后保存在一个数组中
using namespace std;void main(){ int s[5][2];ifstream fin("a.txt");int x;fin>>x;for(int i=1;i<x;i++){ for(int j=1;j<2;j++){ fin>>s[i][j];} } ofstream fout("input.txt");fout<<x;for(int k=1;k<k;k++){ for(int t=1;t<2;t++){ fout<...

请问C++ 如何从txt文件中读取数据,然后保存在类的数组中?
要声明一个信息(学生)类的数组然后再读文件,读文件大概代码如下:ifstream File_read;while(!File_read.eof()){ File_read>>data[i].num>>data[i].name>>data[i].score;i++;} 数组data是的类型是信息类。自己试试。

c++ 如何用 ifstream 读取txt文件,并按每行提取到一个字符串数组中,每...
读取行:提取到字符数组中的话用:void main(){ \/\/string str;char ch[200];ifstream out("d:\\\\data.txt",ios::in);while(!out.eof()){ \/\/getline(out,str);out.getline(ch,200,'\\n');cout<<ch<<endl;} out.close();}

C++如何逐行读取txt文件,并将读取出来的数据进行运算导入到另一个文件...
1、首先我们在电脑上新建一个文件夹,名称叫txt2array。然后,打开我们的devc++,新建一个控制台c++项目,名称也叫txt2array。2、将项目文件及源代码文件以及我们演示用的数据文件都存放在txt2array文件夹中。3、向数据文件中写入一些演示用数据。4、读取文件。输入如下代码:运行下,看来我们读取成功了...

C++如何一行一行读取txt文件中数据并存入相应数组?
循环读入。c 程序 可作为 c++程序。include<iostream> include<fstream> using namespace std;include <stdio.h> main(){ int x[5],y[5];int i;FILE *fp;fp=fopen("sk.txt","r");for (i=0;i<5;i++) fscanf(fp,"%d",&x[i]);for (i=0;i<5;i++) fscanf(fp,"%d",&y[i...

C++中如何将带空格的字符串录入到一个数组中?
方法一:getline()读入整行数据,使用回车键输入的换行符来确定输入结尾。调用方法:cin.getline(str, len)第一个参数str用来存储输入行的数组名称,第二个参数是要读取的字符数。方法二:cin.get(str, len)两者都是读取一行输入,直至换行符。然后,getline将换行符丢弃,而get()将换行符保留在输入...

c++如何读取txt的数据(一行一行的读,从第一行读到最后一行)要详细代 ...
C++读取txt文本数据并一行一行的读方法如下:1、使用C++提供输入输出流的getline函数可以实现整行读取;完整代码如下:include<iostream>#include<fstream>using namespace std;int main(){ \/\/ 定义输入文件流类对象infileifstream infile("test.txt",ios::in);if(!infile){ \/\/ 判断文件是否存在 ...

C++关于用ifstream来读取txt数据赋值给一个结构体对象和数组的问题
其一,先预读一行(按字符读入一个够大的数组),统计其中的空格数,空格数减1就是每行需要读取的数据个数。(大概可以用getline来处理)其二,预先获取整个文件的总行数(=城市个数)。代码是网上Ctrl+V来的 int CountLines(char *filename){ ifstream ReadFile;int n=0;char line[512];ReadFile....

相似回答