为什么当我去打印我的链接列表时,我得到了一个读取访问违规的信息?


所以这里是我的头文件 “Header.h”,其中我的结构被命名为info。

#pragma once
#include<iostream>
#include<string>
using namespace std;
struct info {
    string name;
    int num;
    info();
    info(string names, int numbers);
    info* next;
};
typedef info* ptr;

这是我的info.cpp文件,其中定义了构造函数,并包含了Header.h文件。


#include "Header.h"
    info::info() {
    name = "????";
    num = 0;
    next = NULL;
}


Text.txt文件,我从这个文件中读出了下面描述中的内容

Ashlee  5
Bill    6
Colby   7
Blake   9

这里是我的main.cpp文件,在这个文件中,我一直得到我的读取访问违规。我想做的是从以下文件中读取 Text.txt 把它放入一个结构中,然后用 headInsertion来制作链接列表。

#include<iostream>
#include<fstream>
#include<string>
#include "Header.h"
using namespace std;

void read(ptr& h);
void headInsertion(ptr& h, ptr& Struct);
void printer(ptr& h);
int main() {
    ptr h;
    read(h);
    printer(h);
}

void read(ptr& h) {
    ifstream fin;
    fin.open("Text.txt");
    if (fin.fail()) {
        cout << "file not working";
        exit(1);
    }

    string person;
    string junk;


    getline(fin, person, '\t');
    while (!fin.fail()) {



        ptr s1 = new info;
        s1->name = person;
        fin >> s1->num;
        headInsertion(h, s1);
        s1 = NULL;
        getline(fin, junk, '\n');
        getline(fin, person, '\t');
    }
    fin.close();
}

void headInsertion(ptr& h, ptr& Struct) {
    Struct->next = h;
    h = Struct;
}

void printer(ptr& h) {

    for (ptr tr = h; tr!= NULL; tr = tr->next)
    {
        cout << tr->name<<tr->num; //Exception thrown: read access violation.
        //tr was 0xCCCCCCCC. 


    }

}

而代码中的注释开始的地方就是我得到它的地方。我很困惑,因为我定义了 ptr 的头文件中,但我仍然可以通过使用 ptr tr

解决方案:

int main() {
    ptr h;
    read(h)

你传递了一个未初始化的 ptrread.

void read(ptr& h) {
// snip of code that does not touch h
    headInsertion(h, s1);

单位初始化 ptr 传给 headInsertion.

void headInsertion(ptr& h, ptr& Struct) {
    Struct->next = h;
    h = Struct;
}

哦,第一行设置了 Struct->next 的值,到 hh 从未被初始化。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

让Cisco ASA摄入CommonSecurityLog数据表的问题。

2022-5-12 3:00:17

解决方案

翩翩:安卓应用安装后出现问题

2022-5-12 3:00:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索