为啥一个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()。 函数就是这个

参考技术A

我不知道你是如何在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号,或者把代码放到百度网盘里也行

追问

参考技术B 环境配置问题,看看你的配置环境本回答被提问者采纳 参考技术C 在哪儿出局的

以上是关于为啥一个c语言在windows下编译运行没问题,在linux下编译通过,但是运行就错误了的主要内容,如果未能解决你的问题,请参考以下文章

c语言命令行程序如何在DOS下编译运行?

如何在 Windows 下编译 OpenSSL

如何在Windows下编译OpenSSL

如何在 Windows 下编译 OpenSSL

如何在 Windows 下编译 OpenSSL

配置Windows下编译运行C/C++过程