为啥一个c语言在windows下编译运行没问题,在linux下编译通过,但是运行就错误了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥一个c语言在windows下编译运行没问题,在linux下编译通过,但是运行就错误了相关的知识,希望对你有一定的参考价值。
/****************************************************************
* Program Name : Student Information Management System (SIMS) *
* File Name : wzq.h *
* Author : Wu Zhiquan (吴志权) *
* Date : 1993-07-18 *
* E-mail : 863102331@qq.com *
****************************************************************/
#include <stdio.h>
#include "wzq.h"
#include <string.h>
int main()
int i;
FILE * fp = fopen("text.root", "rb");
if( fp == NULL )
printf("你是第一次使用本程序,请设置一个管理员密码:\n");
for(i = 0; i < 100; i++)
passwd[i] = getch();
if(passwd[i] == 13)
passwd[i] = '\0';
break;
else if(passwd[i] == 8)
i = i -2;
printf("\n你设置的密码是【%s】\n请用力记住", passwd);
//保存密码
FILE * fp = fopen("text.root", "wb");
fwrite( &passwd, strlen(passwd), 1, fp);
fclose(fp);
// 读取管理员密码
fread(&passwd, sizeof(char *), 1, fp);
fclose(fp);
Student s[MAX_STUDENT];
int select;
init(s);
show_copyright();
while( (select=get_choice6()) != 0)
switch( select )
case 1:
administrator(s); //进入管理员菜单
break;
case 2:
average_user(s); //进入普通用户菜单
break;
default:
printf("输入非法,请重新选择\n");
break;
return 0;
把getch()改成my_getch()。 函数就是这个
我不知道你是如何在Windows下运行没问题的
我把代码简化成如下,想看一下编译的效果:
#include <stdio.h>#include <conio.h>
#include <string.h>
int main()
int passwd[100];
int i;
printf("你是第一次使用本程序,请设置一个管理员密码:\\n");
for (i = 0; i < 100; i++)
passwd[i] = _getch();
if (passwd[i] == 13)
passwd[i] = '\\0';
break;
else if (passwd[i] == 8)
i = i - 2;
printf("\\n你设置的密码是【%s】\\n请用力记住", passwd);
结果只能读入第一个字符,后面的都读不进去
如若不弃,能否将完整代码加密打包上传到网盘,然后将密码百度私信于我?
PS. getch()不是标准的C/C++函数,是微软提供的,Linux里真能编译过去?
追问int passwd[100]改成char passwd[100]
追答OK,改了之后Win里没问题了,我复制到虚拟机里看看
追问要把那个getch()改一下。还要用到一个函数,但是字数太多了。在这里发不上
追答留个QQ号,或者把代码放到百度网盘里也行
追问以上是关于为啥一个c语言在windows下编译运行没问题,在linux下编译通过,但是运行就错误了的主要内容,如果未能解决你的问题,请参考以下文章