RelexCao 2021-12-16 13:45 采纳率: 100%
浏览 22
已结题

无法实现输入超期图书信息链表后的输出,不知道输入输出哪里出现问题,如何解决?

问题遇到的现象和发生背景

输出结果为:

img

问题相关代码,请勿粘贴截图
#pragma warning(disable:4996) //禁用Vusial Studio的数据溢出出错提示

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <string.h>
#include <math.h>

#define LOSCXX sizeof(struct scxx)  //首次输入的图书超期信息长度





struct scxx   //首次输入的图书超期信息
{
    char grxx[30];  //个人
    char bjxx[30];  //班级
    char tsxx[30];  //图书信息
    int cqts; //超期多少天
    int fkje; //罚款金额
    struct scxx *next;
};
int n;
struct scxx*creatsc(void) //返回指针的函数
{
    struct scxx *head;
    struct scxx *ps1, *ps2;
    n = 0;
    ps1 = ps2 = (struct scxx*)malloc(LOSCXX);
    scanf("%s,%s,%s,%d,%d", &ps1->grxx, &ps1->bjxx, &ps1->tsxx, &ps1->cqts, &ps1->fkje);
    head = NULL;
    while(strcmp(ps1->grxx,"end") != 0)
    {
        n = n + 1;
        if (n == 1)head = ps1;
        else ps2->next = ps1;
        ps2 = ps1;
        ps1 = (struct scxx*)malloc(LOSCXX);
        scanf("%s,%s,%s,%d,%d", &ps1->grxx, &ps1->bjxx, &ps1->tsxx, &ps1->cqts, &ps1->fkje);
    }
    ps2->next = NULL;
    return(head);
}

void print(struct scxx*head)
{
    struct scxx* p;
    p = head;
    if(head!=NULL)
        do { printf("%s,%s,%s,%d,%d", p->grxx, p->bjxx, p->tsxx, p->cqts, p->fkje);
    p = p->next;

    } while (p != NULL);
}



int main()
{
    struct scxx *head;
    head = creatsc();
    print(head);
    return 0;
}

运行结果及报错内容

![img](
更改输入输出类型

我想要达到的结果

实现超期图书链表的输入和输出https://img-mid.csdnimg.cn/release/static/image/mid/ask/49813533693617.png "#left")

  • 写回答

1条回答 默认 最新

  • 不务正业的学长 2021-12-16 15:02
    关注

    1、把scanf("%s,%s,%s,%d,%d", &ps1->grxx, &ps1->bjxx, &ps1->tsxx, &ps1->cqts, &ps1->fkje);改为
    scanf("%s",&ps1->grxx);
    scanf("%s",&ps1->bjxx);
    scanf("%s",&ps1->tsxx);
    scanf("%d",&ps1->cqts);
    scanf("%d",&ps1->fkje);
    2、估计你是才初学C语言,调试一下,就能看见,你之前那样赋值的话,字符串全赋值给ps1->grxx。
    3、下图是我用你的代码调试,输入字符串查看ps1的值。

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月17日
  • 已采纳回答 12月16日
  • 创建了问题 12月16日

悬赏问题

  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像