运行c程序,Linux用命令行方式

开发一个C程序时,你选择命令行方式开发还是集成环境方式开发?比较这两种方式的优劣,你在选择开发工具时应该如何考虑。

能用开发环境就用开发环境。没有开发环境才用命令方式。
命令方式适合没有图形界面的服务器或者远程终端、需要和自动化工具集成,比如说批量构建,你搭建一个oj一类的网站或者做一个开发工具,那么后端调用命令。
总之,命令是给机器用的,人有方便的不用,是自找麻烦。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/681016
  • 这篇博客也不错, 你可以看下最小镜像文件制作【树莓派镜像】,简单有效,已经制作多次。使用Linux系统,只有Win系统的不适合。及再次烧录后启动可能出现的问题解决办法。
  • 除此之外, 这篇博客: Linux系统用C语言实现贪吃蛇游戏中的 数据的保存和读取是这个游戏编程过程中的难点之一,由于读取数据时需要对数据申请空间进行存放,所以非常容易出现断错误。尽量做到按顺序保存读取数据,需要申请空间的不要吝啬,申请到的动态存储空间做到物尽其用,避免断错误的产生。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 保存游戏数据

    void save_game()
    {
    	FILE *fp;
    	if ((fp = fopen("information.dat","w")) == NULL)
    	{
    		printf("open file fail,at read_information-if-1.\n");
    		return;
    	}
    	fwrite("SNAKE",5,1,fp);
    	fwrite(&ver,4,1,fp);
    	fwrite(&snake_length,4,1,fp);
    	fwrite (&cur_dir,4,1,fp);
    	psnake p;
    	p = link_head;
    	while (p != NULL)
    	{
    		fwrite (&p->data,sizeof(Snake_data),1,fp);
    		p = p->next;
    	}
    	fwrite (food,sizeof(pfood),1,fp);
    	fwrite(&score,4,1,fp);
    	fwrite(&speed,4,1,fp);
    	fclose(fp);
    	fp=NULL;
    }
    

    读取游戏数据

    void read_game()
    {
    	int n,t = 1;
    	signed int read_dir;
    	char buf[6];
    	FILE *fp;
    	if ((fp = fopen("information.dat","r")) == NULL)
    	{
    		init_food();
    		init_snake();
    		printf("open file fail,at read_information-if-1.\n");
    		return;
    	}
    	if(fp)	fclose(fp);
    	fp = fopen("information.dat","r");
    	fread(buf,5,1,fp);
    	if (strncmp(buf,"SNAKE",5) != 0)
    	{
    		init_food();
    		init_snake();
    	}
    	else
    	{
    		fread (&ver,4,1,fp);
    		if (ver == 1)
    		{
    			int i;
    			fread (&snake_length,4,1,fp);
    			fread (&read_dir,4,1,fp);
    			psnake p,ptail;
    			for (i = 0; i < snake_length; i++)
    			{
    				p = (psnake)malloc(sizeof(psnake));
    				if (p ==NULL)
    				{
    					printf("malloc fail,at read_information\n");
    					return;
    				}
    				fread(&p->data,sizeof(Snake_data),1,fp);
    				if (t == 1)
    				{
    					link_head = p;
    					ptail = p;
    					t = 0;
    				}
    				else
    				{
    					ptail->next = p;
    					ptail = p;
    				}
    			}
    			ptail->next = NULL;
    			snake_head = ptail;
    			cur_dir = read_dir;
    			food = (pfood)malloc(sizeof(pfood));
    			fread(food,sizeof(pfood),1,fp);
    			fread (&score,4,1,fp);
    			fread (&speed,4,1,fp);			
    		}
    		else if (n == 1)
    		{
    			init_food();
    			init_snake();
    		}
    	}
    	fclose(fp);
    	fp = NULL;
    }
    

    暂停游戏。游戏过程中可暂停、可继续,暂停时也可保存并退出游戏。

    int stop_game()		//游戏暂停(可保存退出)
    {
    	char ch;
    	MOVETO(11,3);
    	printf("Game stoping,Press space to continu");
    	while (1)
    	{
    		if ((ch = getchar()) == 'q')
    		{
    			MOVETO(1,25);
    			save_game();
    			RestoreConsole();
    			return 0;
    		}
    		else if ((ch = getchar()) == ' ')
    			return 1;
    	}
    }