c - 在 0x7C43F338 (ucrtbased.dll) 处引发异常
问题描述
老师给了我一个代码,我尝试在 Visual Basic 2019 上运行它,但在 0x7C43F338 (ucrtbased.dll) 处抛出异常。我只是被介绍给 c 并且不知道出了什么问题
这是我的代码:
#include <cstdio>
#include <malloc.h>
#include <string.h>
//percobaan 1 dan 3
int main(){
printf("percobaan 1 dan 3\n");
struct dtnilai
{
char nrp[10];
char nama[20];
double nilai;
struct dtnilai* next;
};
struct dtnilai* ujung;
void sisip_awal_LIFO();
{
struct dtnilai* tampung = 0;
int j = 0; char jawab[2];
while (1)
{
ujung = (struct dtnilai*)malloc(sizeof(struct dtnilai));
fflush(stdin);
printf("NRP :"); scanf("%s", &ujung->nrp);
printf("Nama :"); scanf("%s", &ujung->nama);
printf("Nilai Test :"); scanf("%lf", &ujung->nilai);
if (j == 0)
{
ujung->next = NULL;
tampung = ujung;
}
else
{
ujung->next = tampung;
tampung = ujung;
}
printf("Ada data lagi(y/t):"); scanf("%s", &jawab);
if ((strcmp(jawab, "Y") == 0) || (strcmp(jawab, "y") == 0))
{
j++; continue;
}
else if ((strcmp(jawab, "T") == 0) || (strcmp(jawab, "t") == 0))
break;
}
}
void tampil_list();
{
struct dtnilai* tampil;
printf("Data Mahasiswa yang telah diinputkan :\n");
printf("NRP\tNama\tNilai\n");
tampil = ujung;
while (tampil != NULL)
{
printf("%s\t%s\t%6.2f\n", tampil->nrp, tampil->nama,
tampil->nilai);
tampil = tampil->next;
}
}
void sisip_stl_simpul();
{
struct dtnilai* sisip; struct dtnilai* stl;
char cari[20];
char nrp[10];
char nama[20];
double nilai;
struct dtnilai* next;
if (ujung == NULL)
printf("List Belum Terbentuk. Buatlah Dulu!");
else
{
ujung = (struct dtnilai*)malloc(sizeof(struct dtnilai));
sisip = (struct dtnilai*)malloc(sizeof(struct dtnilai));
printf("Masukkan Data Yang Akan Disisipkan \n");
printf("NRP :\n"); gets_s(sisip->nrp); //<- cant input
printf("Nama :\n"); gets_s(sisip->nama);
printf("Nilai Test :\n"); (sisip->nilai); //<-cant input
printf("Data disisipkan setelah data ? (nama) : ");
gets_s(cari);
//gets_s(cari);
stl = ujung;
while(strcmp(stl->nama, cari) != 0) //<- error
{
stl = stl->next;
}
sisip->next = stl->next;
stl->next = sisip;
}
}
void tampil_list();
{
struct dtnilai* tampil;
printf("Data Mahasiswa yang telah diinputkan :\n");
printf("NRP\tNama\tNilai\n");
tampil = ujung;
while (tampil != NULL)
{
printf("%s\t%s\t%6.2f\n", tampil->nrp, tampil->nama,
tampil->nilai);
tampil = tampil->next;
}
}
}
在这条线上
printf("NRP :\n"); gets_s(sisip->nrp); //<- cant input
printf("Nama :\n"); gets_s(sisip->nama);
printf("Nilai Test :\n"); (sisip->nilai); //<-cant input, also if i put gets_s in here i get error.
printf("Data disisipkan setelah data ? (nama) : ");
gets_s(cari);
最初的gets_s是“gets”但“gets”获取标识符未定义,我也尝试使用fgets,scanf但它不起作用
对不起我的英语不好。
解决方案
推荐阅读
- c - 如何在 C 中包含“sthread.h”
- javascript - asyncjs:`未捕获(承诺)错误:..`
- node.js - 在 Express 中使用休息 api:未找到用户 ID
- django - django m2m 字段返回对象而不是键
- swift - 使用 IOBluetoothHostController.default() 时的异常
- .net-core - 实现 Google Calendar API 以获取 ASP.NET 核心中的事件列表
- sql - How to Extract Each Component in Array using Hive
- java - 使用java本机接口获取windows当前用户
- azure - 在 Service Fabric 中,可靠队列是否仅适用于相同的服务类型?
- c - 从没有“零”保存的稀疏矩阵中打印矩阵线