意外的结果从文件中提取了编辑过的字符串

问题描述

下面的代码段创建,填充多维字符串数组并将其填充到文本文件。然后,允许用户文件提取单个数组元素。 (感谢MikeCAT的投入。)

但是,如果在程序所在的位置等待用户输入以告知要提取哪个字符串(此时程序已经写入并关闭了Data.txt文件,我用记事本打开文本文件,如果字符串在记事本文件 (在字符串长度限制内),请编辑一个,然后保存并关闭记事本 >文件,然后在提示符下输入要提取的字符串元素,例如1 2 1,程序将打开已编辑的记事本文件,以获取所需的字符串,但输出不是已编辑的字符串,或者实际上不是限制为“字符串长度”参数。

当前将数组保存到.txt文件,然后使用记事本打开,编辑和保存该数组。

在该网站和Google上进行的搜索未告知我应使用哪种文件类型(扩展名)来存储数据,或者可以使用哪种程序打开,编辑和保存该文件,以便程序可以正确提取编辑的字符串。

P.S理想情况下,存储数组的文件应可读为“普通”文本。

您的智慧得到了赞赏

#include <stdio.h>
#include <string.h>

#define ELEMENT_SIZE 20

struct data_cell
{
char my_data[3][3][3][ELEMENT_SIZE];
int element_num[3];
};

void main()
{
    /** for writing**/
            struct data_cell save;
            int x,y,z;
            char d[] = {'0'};
    /** for reading **/
            struct data_cell from_file;
            int dimensions[3];
            int a,b,c ;

            char path[] = "C:\\Users\\dave\\Documents\\data.txt";
            FILE *fp ;

      if ((fp = fopen(path,"w")) == NULL)
        {
        printf("cannot open file");
        exit(1);
        }

        for(x=0 ; x< 3 ; x++)
            for(y =0 ; y < 3 ; y++)
                for(z =0 ; z < 3 ; z++)
                    {
                    strcpy(save.my_data[x][y][z],"element   is at ");
                    save.my_data[x][y][z][8] = d[0];
                    d[0]+=1;        /** !!!!! d[0] is a"char",therefore when d[0] > 9  it appears as symbol or letter !!!**/
                    save.element_num[0] = x;
                    save.element_num[1] = y;
                    save.element_num[2] = z;

                    printf("data_cell %s[%d][%d][%d]\n",save.my_data[x][y][z],save.element_num[0],save.element_num[1],save.element_num[2] );

                    }

             fwrite(&save,sizeof(save),1,fp);

     fclose(fp);


     /** reading **/
    

        printf("enter array element to be read eg 1  2  1");  /** Range 0-2,press return between each**/

        scanf("%d %d %d",&dimensions[0],&dimensions[1],&dimensions[2] );

        a = dimensions[0];
        b = dimensions[1];
        c = dimensions[2];


        if ((fp = fopen(path,"r")) == NULL)
        {
        printf("cannot open file");
        exit(1);
        }
        fread(&from_file,sizeof(from_file),fp );

        /** !!! element ident is a "char",therefore when element ident > 9  it appears as symbol or letter !!!**/
        printf("data_cell.my_data  %s [%d][%d][%d]",from_file.my_data[a][b][c],a,c );

        fclose(fp);
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...