linux 下运行C的程序,终端运行出现乱码,该怎么解决?!!

来源:百度知道 编辑:UC知道 时间:2024/06/15 22:27:37
代码如下:
/*
多进程实现PV操作,子进程为生产者,仓库可以容纳5个物品,每次检查仓库是否满,若不满则执行P操作,生产一个物品放入仓库。父进程检验仓库是否空,若不空则消耗一个物品,执行V操作。sleep函数是随即设置生产或消费所用时间。

程序主要目的是演示信号量的使用,以备以后参考。
*/

#include<stdio.h>
#include<stdlib.h>
#include<sys/ipc.h>
#include<sys/sem.h>
#include<sys/types.h>

int main()
{
int semID,ret,num;
int sleepTime;
struct sembuf buf;

semID = semget(IPC_PRIVATE,1,0666);
if(semID < 0)
{
printf("创建信号量出错\n");
exit(1);
}

if(fork() == 0)
{
while(1)
{
num = semctl(semID,0,GETVAL,NULL);
if(num < 5)
{
sleepTime = rand() % 5;
sleep(sleepTime);

buf.sem_num = 0;
buf.sem_op = 1;
buf.sem_flg = 0;

ret = semop(semID,&buf,1);
if(ret < 0)
{
printf("执行P操作失败!\n");

在linux下,其实不用选择gb2312,我都用的是utf8,当然也需要按照以上步骤进行设置,肯定不会出现乱码!个人喜好,大家随意!

之前我试了很多方法,比如在/etc/sysconfig/i18n文件中改系统字体,在/etc/my.cnf中[mysqld]字段后加入如下语句default-character-set=gb2312等等,我觉得没有必要。

以上步骤看似很简单,但是我的失败教训,也是我的成功心得。现在与大家分享,看后有收获的,不顶一下就是你的不厚道了!

初步 判断 是 汉字的问题吧

你把 汉字 换成对应 的 字母试试看!

Good luck

在Linux下处理汉字的最省力的方法就是统统使用UTF8编码。
locale使用zh_cn.utf-8
源代码使用utf8编码保存。