如何从文件中提取String和Int,并将其放入2D Array中。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从文件中提取String和Int,并将其放入2D Array中。相关的知识,希望对你有一定的参考价值。

我想知道我是否可以从txt文件中提取字符串和int,然后放入二维数组中,这样我就可以在以后用这个二维数组来编辑文件。

我的代码。

#include <stdlib.h>
#include <string.h>

#define Max_Name_Chars 20
#define Max_Accounts 100
#define Max_Chars_Per_Account 100

void getDataBaseText(FILE* Database,char * Array_Name_Money[Max_Accounts][2]);
void saveDataBase(FILE* Database,char * Array_Name_Money[Max_Accounts][2], int Line_Counter);
void setDataAtDatabase(FILE* Database,char Name[Max_Name_Chars], int Money);

int main()
{

    FILE* Database = fopen("Database.txt", "a+");

    setDataAtDatabase(Database,"Big",100);

    fclose(Database);
    return 0;
}

void getDataBaseText(FILE* Database,char * Array_Name_Money[Max_Accounts][2])
{
    int Charcters;
    int Line_Counter = 0;
    int Char_Index = 0;
    int SwitchIndex = 0;
    while ( (Charcters = getc(Database) ) != EOF)
    {
        printf("%d",Char_Index);

        if (Charcters == '
') {
            Line_Counter++;
            Char_Index = 0;
            SwitchIndex = 0;
            continue;
        } else if (Charcters == ':') {
            Char_Index = 0;
            SwitchIndex = 1;
            continue;
        }

        Array_Name_Money[Line_Counter][SwitchIndex][Char_Index] = Charcters;
        Char_Index++;
    }
}

void setDataAtDatabase(FILE* Database,char Name[Max_Name_Chars], int Money)
{
    char * Array_Name_Money[Max_Accounts][2];
    getDataBaseText(Database,Array_Name_Money);

    int Line_Counter;
    int FoundName = 0;
    for (Line_Counter = 0 ; Array_Name_Money[Line_Counter][0][0] ;Line_Counter++ )
    {
        //printf("%s
",Array_Name_Money[Line_Counter][0]);
        if (strcmp(Name,Array_Name_Money[Line_Counter][0]) ==0 )
        {
            FoundName = Line_Counter;
            break;
        }
    }

    char DataBase_Money[Max_Chars_Per_Account];
    sprintf(DataBase_Money, "%d", Money);

    if (FoundName)
    {
        Array_Name_Money[FoundName][1] = DataBase_Money;
    } else {

        Array_Name_Money[Line_Counter][0] = Name;

        Array_Name_Money[Line_Counter][1] = DataBase_Money;
    }
    saveDataBase(Database,Array_Name_Money,Line_Counter);
}

void saveDataBase(FILE* Database,char * Array_Name_Money[Max_Accounts][2], int Line_Counter)
{
    fclose(fopen("Database.txt", "w"));
    for(int i = 0 ; i <= Line_Counter ; i++)
    {
        fprintf(Database,"%s:%s",Array_Name_Money[i][0],Array_Name_Money[i][1]);

        if (i != Line_Counter)
            fprintf(Database,"
");
    }
}

我的问题是,在函数 "getDataBaseText "中 它没有从txt文件中提取完整的字符,因为它只提取 "Big:1"

我的txt文件。Big:100

我想做的就是取一个字符串和int,如果名字不存在,就把它放在文件里,但如果名字存在,我就想在txt文件里设置一个新的钱的值,我曾搜索过从文件中取二维数组的方法,但有任何像我这样的问题。

答案

建议:从文件中输入一整行,或许使用大的缓冲区和函数:#..:

从文件中输入一整行,也许用一个大的缓冲区和函数。fgets( largeBuffer, sizeof largeBuffer, fp) 其中 "fp "是文件指针,来自 fopen()

然后使用 strtok( buffer, ":") 以获得一个指向前导字符串的'token'指针。

然后使用 if( strcmp( token, "Big" ) == 0 ) 检查当前行是否为感兴趣的行。

如果当前线路是感兴趣的线路

然后使用 strtok( NULL, ":") 获得一个指向数值的'token'指针。

然后使用 sscanf( token, "%d", &number ) 以保存号码到 int 可变的

以上是关于如何从文件中提取String和Int,并将其放入2D Array中。的主要内容,如果未能解决你的问题,请参考以下文章

从两个唯一标签或评论之间的文件中提取内容并将其放入具有相同标签或评论的其他文件中?

我如何提取合并的数据并将其放入不同的工作表中?

如何从 NSDictionary 中提取一个整数并将其放入一个整数中?

如何从记事本文件中取出数据并将其放入用户定义的函数中?

如何从数据库中检索 bigint 并将其放入 SSIS 中的 Int64

如何从 SQL 查询中提取数据并将其分配给 Odoo 类列?