简柯 2021-07-13 20:27 采纳率: 75%
浏览 231
已采纳

vs2019出现问题 引发了异常: 写入访问权限冲突。 **q** 是 0x4A1258。

因为写入访问权限受阻而无法成功输入数据。之前曾经写过另外一个方法,那个方法是将首指针也存入了数据,但是我将输入的数据即时输出(即读入)时是正确的,后面进行交换却是错的,因此重新写了一份,也就是这一份,首指针为空不存入数据,输入后后面交换时数值时正确的(调试),但是一到后面就不对了,查了csdn的相关类似问题,结果就是大部分都是数组越界,但是我检查了逻辑,确实是写一个就加一个,应该不可能越界,其他答案也无法解决我的问题。想要一份通俗易懂些的答案,之前都没接触过链表,实在是搞不明白到底哪里错了。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
# define WHY printf("***\n");
#pragma warning (disable:4996)
typedef struct ren//创建结构体
{
    char n[20];
    char sex;
    int cg;
    struct ren* next;
}STU;
STU* create()
{
    STU* head;
    head = (STU*)malloc(sizeof(STU));
    head->next = NULL;
    return head;
}
void new(STU* qH, int* c){
    STU * q = qH,*qb;
    printf("请输入数据\n");
    STU* p = (STU*)malloc(sizeof(STU));
    if (NULL == p)
    {
        printf("malloc error!\n");
        return NULL;
    }
    printf("成绩:\t");
    scanf("%d", &(p->cg));
    printf("成绩\t\n");
    printf("%d\t\n", p->cg);
    p->next = NULL;
    (*c)++;
    int n, i;
    if ((*c) == 1)
        {
            q->next = p;//报错处
            p->next = NULL;
        }
    else {
        while (NULL != q->next)
        {
            q = q->next;
        }
        p->next = q->next;
        q->next = p;
        }
}

void main()
{
    int count = 0, a = 1, * c;
    c = &count;
    struct ren* q = create;
    while (a)//重复使用
    {
    int a;
    printf("输入1添加新学生\n ");
    scanf("%d", &a);
    switch (a)
    {
    case 1:new(q, c); break;//计数几个人
    case 6:break;
    }
}
}

以上是实际使用的部分代码

img

以上是结果

  • 写回答

3条回答 默认 最新

  • 简柯 2021-07-14 20:29
    关注

    最终我还是解决了问题,我放到dev里跑了,结果就是应该用c++而非C语言,因此困扰我这么久的问题就是我受我们课上的是C语言,没想过应该改成c++

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 7月14日
  • 创建了问题 7月13日

悬赏问题

  • ¥15 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了