标题:C中关于汉字更深一层的问题
只看楼主
初学学者
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-3-25
结帖率:100%
已结贴  问题点数:20 回复次数:8 
C中关于汉字更深一层的问题
各路老铁,为什么我在C中在printf("")输入的汉字经过编译之后变成了几个看不懂的字?
就是这样:闀垮害涓?
但是另外一个代码在同一个编译器之下是可以输出汉字的,两个代码的头文件是一样的,都是直接printf("")
搜索更多相关主题的帖子: 汉字 printf 代码 输出 头文件 
2018-04-07 12:09
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:5 
代碼呢?
2018-04-07 12:28
初学学者
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-3-25
得分:0 
回复 2楼 Jonny0201


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NULL 0
#define Leng 1024
typedef int elemtype;
typedef struct Link
{
    elemtype data[Leng];
    int Length;
}LinkList;
int count=0;

//函数声明
LinkList *Create_LinkList(LinkList *L);
int Insert_data(LinkList *L);
void Print_LinkList(LinkList *L);

int main()
{
    LinkList *L=NULL;
    L=Create_LinkList(L);
    if(L==NULL)
        printf("空间不足!\n");
    Insert_data(L);
    Print_LinkList(L);
    return 0;
}

//建表
LinkList *Create_LinkList(LinkList *L)
{
    L =(LinkList *) malloc(sizeof(LinkList));
    if(L==NULL)
        printf("空间不足!\n");
    else
    L -> Length = -1;
    return L;
}

//产生随机数并插入单链表
int Insert_data(LinkList *L)
{
    LinkList *head;
    int i,j;
    srand((int)time(0));
    for(i=0;i<20;i++)
        {
            j=(int)rand()%200+1;
            L -> data[L -> Length]=j;
            L -> Length++;
        }
    count=L -> Length++;
}

//输出内容和长度
void Print_LinkList(LinkList *L)
{
    LinkList *temp;
    temp=L;
    int i=0;
    while(count>i)
    {
        printf("%5d",temp -> data[i]);
        i++;
    }
    printf("\n");
    printf("长度为:%d",temp -> Length);
}
2018-04-07 12:49
初学学者
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-3-25
得分:0 
回复 2楼 Jonny0201
就是最后那里输出 长度为  的时候变成了其他看不懂的字,其他都正常吧
2018-04-07 12:50
sunus
Rank: 4
等 级:业余侠客
威 望:3
帖 子:47
专家分:234
注 册:2017-10-10
得分:13 
在我电脑上是正常的,WIN7。你是linux?
2018-04-08 09:40
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
得分:2 
int Insert_data(LinkList *L)
{
    LinkList *head;
    int i,j;
    srand((int)time(0));
    for(i=0;i<20;i++)
        {
            j=(int)rand()%200+1;
            L -> data[L -> Length]=j;
            L -> Length++;
        }
    count=L -> Length++;
}
这里没有 return 语句
我改成了 void
另外我把 #define NULL 0 去掉了
在我这没什么问题, 就算不改也只是报警告, 并没有你说的问题
2018-04-08 12:15
初学学者
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-3-25
得分:0 
回复 5楼 sunus
我的是win10,用的是CodeBlock
2018-04-09 08:00
初学学者
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-3-25
得分:0 
回复 6楼 Jonny0201
我把代码复制到另一个新建的项目之后,可以正常运行了,没问题了,出现这样的情况算是编译器的问题还是电脑问题?
2018-04-09 08:08
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
是不是编辑问题,换行重写那行代码。
2018-04-09 08:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485811-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.179565 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved