当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 8 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 运行c程序 终端出现乱码
帖子发表于 : 2011-04-06 21:38 

注册: 2010-02-17 22:45
帖子: 29
送出感谢: 0 次
接收感谢: 0 次
C的代码
#include<stdio.h>
#include <string.h>
#define A "┏"
#define B "┣"
#define C "┗"
#define D "┳"
#define E "╋"
#define F "┻"
#define G "┓"
#define H "┫"
#define M "┛"
#define N "○"
#define I "●"
void out(char (*p)[10][3])
{
int i=0,j=0;
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
printf("%s",*(*(p+i)+j));
}
printf("\n");
}
}
int main()
{
int a,b;
int i,j;
char arr[10][10][3];
char (*p)[10][3];
p=arr;
strcpy(arr[0][0],A);
strcpy(arr[0][9],G);
strcpy(arr[9][0],C);
strcpy(arr[9][9],M);
for(i=1;i<9;i++)
{
for (j=1;j<9;j++)
{
strcpy(arr[i][j],E);
}
}
i=0;
for(j=1;j<9;j++)
{
strcpy(arr[i][j],D);
}
i=9;
for(j=1;j<9;j++)
{
strcpy(arr[i][j],F);
}
for (i = 1; i < 9; i++)
{
strcpy(arr[i][0],B);
strcpy(arr[i][9],H);
}
out(p);
while(1)
{
printf("白子走,请输入行,列:");
scanf("%d,%d",&a,&b);
strcpy(arr[a-1][b-1],N);
out(p);
printf("黑子走,请输入行,列:");
scanf("%d,%d",&a,&b);
strcpy(arr[a-1][b-1],I);
out(p);
}
return 0;
}
终端运行

xl@xl-Compaq-Presario-CQ45-Notebook-PC:~$ gcc 18.c -o 18
xl@xl-Compaq-Presario-CQ45-Notebook-PC:~$ ./18
(�s��Ts����8s�����8s��������
���Ъܪ������
`�Ts��Ts��<��<xs��̄`�Hs���̄`�Ks��`�Ns���Qs��Ts���
�t���}.��}..��
�t�����s������┏┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳
┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┳┣
╋╋╋╋╋╋╋┫┣╋╋╋╋╋╋┫┣╋╋╋╋╋┫┣╋╋╋╋┫┣╋╋╋┫┣╋╋┫┣╋┫┣┫┣┣
╋╋╋╋╋╋╋┫┣╋╋╋╋╋╋┫┣╋╋╋╋╋┫┣╋╋╋╋┫┣╋╋╋┫┣╋╋┫┣╋┫┣┫┣┣
╋╋╋╋╋╋╋┫┣╋╋╋╋╋╋┫┣╋╋╋╋╋┫┣╋╋╋╋┫┣╋╋╋┫┣╋╋┫┣╋┫┣┫┣┣
╋╋╋╋╋╋╋┫┣╋╋╋╋╋╋┫┣╋╋╋╋╋┫┣╋╋╋╋┫┣╋╋╋┫┣╋╋┫┣╋┫┣┫┣┣
白子走,请输入行,列:
请问怎么解决。。


附件:
Screenshot-1.png
Screenshot-1.png [ 108.17 KiB | 被浏览 3010 次 ]

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 运行c程序 终端出现乱码
帖子发表于 : 2011-04-06 22:06 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
用宽字符吧!


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 运行c程序 终端出现乱码
帖子发表于 : 2011-04-06 22:12 

注册: 2010-02-17 22:45
帖子: 29
送出感谢: 0 次
接收感谢: 0 次
自由建客 写道:
用宽字符吧!

怎么搞之~...


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 运行c程序 终端出现乱码
帖子发表于 : 2011-04-06 22:51 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
gl4215269 写道:
自由建客 写道:
用宽字符吧!

怎么搞之~...

自己参考去
代码:
#include <iostream>
#include <locale>
#include <cstdlib>

using namespace std;

class Line {
public:
    Line(double k=0.0, double b=0.0): K(k), B(b) { /* 空 */ }
    void SetK(double k) { K=k; }
    void SetB(double b) { B=b; }
    double GetK() { return K; }
    double GetB() { return B; }
    void Show()
    {
        wcout << L"斜率: " << K << endl
            << L"截距: " << B << endl
            << L"解析式: " << "y = " << K << "*x + " << B << endl;
    }
private:
    double K,B;
};

int main()
{
    const char *s=getenv("LC_ALL");
    if(s==NULL) {
        s=getenv("LANG");
        if(s==NULL) s="C";
    }
    setlocale(LC_ALL, s);

    Line l(3,5);
    l.Show();
    l.SetK(-0.5);
    l.SetB(3.9);
    l.Show();

    return 0;
}


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 运行c程序 终端出现乱码
帖子发表于 : 2011-04-06 22:52 
头像

注册: 2010-10-17 18:23
帖子: 156
送出感谢: 0 次
接收感谢: 0 次
-set encoding gb2312


_________________
用起来还是蛮舒服的!
生命在于折腾!
为什么这个论坛复旦的人很少!!


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 运行c程序 终端出现乱码
帖子发表于 : 2011-04-06 23:11 
头像

注册: 2005-10-16 8:26
帖子: 1937
地址: 地球
送出感谢: 0 次
接收感谢: 1
gl4215269 写道:
C的代码
。。。。。。
#define A "┏"
。。。。。。
int main()
{
。。。。。。
char arr[10][10][3];
。。。。。。
strcpy(arr[0][0],A);
。。。。。。
}


你的错误很简单:你定义的字符串A、B等,实际上是长度为3的字符串(你可以输出strlen(A)来检查),而在主函数里用来保存每个节点输出字符的字符串arr只有三个字节长,没有地方存储终止字符,输出的时候自然就是乱的。只要把“char arr[10][10][3]”改成“char arr[10][10][4]“就可以了。下面的截图是修改后的程序的输出效果。


附件:
screenshot.png
screenshot.png [ 39.08 KiB | 被浏览 2963 次 ]



_________________
http://www.pandabang.info


最后由 goldfox_79 编辑于 2011-04-06 23:17,总共编辑了 1 次
页首
 用户资料  
 
7 楼 
 文章标题 : Re: 运行c程序 终端出现乱码
帖子发表于 : 2011-04-06 23:13 
头像

注册: 2005-10-16 8:26
帖子: 1937
地址: 地球
送出感谢: 0 次
接收感谢: 1
我用的gnome-terminal 是utf-8编码。

mark,棋类 界面 输出


_________________
http://www.pandabang.info


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 运行c程序 终端出现乱码
帖子发表于 : 2011-04-06 23:24 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
还是用宽字符好,这样无论是在 UTF-8 终端还是 GBK 终端都能正常显示。
忘掉 printf ,改用 wprintf 等等。
这是个比较大的课题,自己 google 吧。

代码:
aptitude install -R manpages-posix-dev
man wchar.h


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 8 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译