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

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

下面的代码段创建,填充多维字符串数组并将其填充到文本文件。然后,允许用户文件提取单个数组元素。 (感谢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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?