c语言怎样才能输出中文???(最简单的方法)

rt,在一个程序中我puts()输出中文名字,带但有些有会多出几个不是我输入的字,怎么才能让它输出正确??可能没说清楚,我puts()的括号里是一个指针变量(*P),这个... rt,在一个程序中我puts()输出中文名字,带但有些有会多出几个不是我输入的字,怎么才能让它输出正确??
可能没说清楚,我puts()的括号里是一个指针变量(*P),这个变量是用gets(&p)得到的汉字,但用puts(&p)输出有的就会多几个字出来,有的又是正常的.....我想知道怎样才能输出正常。
我是用的vc2003,2005我也有。
->6楼:你的方法我也试了的,还是一样,我发现要是输入一个汉字的话就不会出问题,我把程序(得到名字的函数)放在下面,你们看看是怎么回事啊。

typedef struct
{
int no;
int ti;
int ip[N];
int c;
char name[21];
}bus;
void getdata(bus a[M])
{
a[0].ti=0;
bus *p;
int m;
p=a;
int n=50101;
for(int i=0;i<M;i++)
{
n=n+i;
a[i].no=n;
a[i].c=rand()%3+3;
m=a[i].c;
for(int j=0;j<m;j++)
{
a[i].ip[j]=rand()%81+50;
a[i].ti=a[i].ti+a[i].ip[j];
}
printf("请输入5010%d车名:",i+1);//这里
gets(&(p+i)->name[21]);
sum=sum+a[i].ti;
}
}
输出用的是:puts(&(p+i)->name[21]);
展开
 我来答
梦之盼兮

2021-04-05 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.8万
采纳率:51%
帮助的人:1095万
展开全部
实现简单的英汉词典,词库就10个单词好了

实现功能:

输入单词时,可以输出相应的中文

输入中文时,可以输出相应的英文

如果输入的单词或者中文查找不存在时,则输出"你所查找的内容不存在,请重新输入"。

【要求使用链表来实现,并且直至输入能查找的词时程序才退出,只要查找不到就要一直重复输入】

提供10个单词

one 一

two 二

three 三

four 四

five 五

six 六

seven 七

eight 八

nine 九

ten 十

#include

#include

#include

#define WORDSIZE 20

#define MEANSIZE 25

struct Record{

char word[WORDSIZE];

char mean[MEANSIZE];

};

struct Node{

struct Record data;

struct Node *next;

};

int flag = 0;

void initData(struct Node *head);

void printData(struct Node *head);

void searchByWord(struct Node *head,char *word);

void searchByMean(struct Node *head,char *mean);

int main()

{

struct Node* head;

head = (struct Node*)malloc(sizeof(struct Node));

initData(head);

int choose;

char input[20];

while(!flag){

printf("------------------\n");

printf("1.根据中文查英文\n");

printf("2.根据英文查中文\n");

printf("------------------\n");

printf("请输入你的选择\n");

scanf("%d",&choose);

switch(choose)

{

case 1:

printf("请输入(中文):");

scanf("%s",input);

searchByMean(head,input);

break;

case 2:

printf("请输入(英文):");

scanf("%s",input);

searchByWord(head,input);

break;

default:

printf("输入有误,请重新输入\n");

break;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
茫茫人海一亮星

2021-04-04 · TA获得超过4.4万个赞
知道大有可为答主
回答量:4.1万
采纳率:82%
帮助的人:1490万
展开全部
c语言怎样才能输出中文???(最简单的方法)?虽然我没看见你的程序,我觉得问题出在:你的指针变量(*P)指向的空间是否足够大?
请看我下面的程序:
#include<stdio.h>
int main()
{
char s[101];
while(gets(s),s[0]!='0')
{
puts(s);
}
return 0;
}
只要你输入的不超过50个汉字(每个汉字占2个字节),都能完好输出的
注意:输入0结束
补充回答:
你的错误就在gets和puts的语句啊,应该这样修改:
gets(&(p+i)->name); //////////////去掉后面的[21]
puts(&(p+i)->name); //////////////去掉后面的[21]
你不清楚它们之间的区别吗?把文件简化一下:
char name[21];
gets(name);/////////不能用gets(name[21])
puts(name);/////////不能用puts(name[21])
name表示字符数组的首地址,也可以看成字符串
而name[21]什么都不是,是一种完全错误的写法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高金山
推荐于2017-09-06 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1693万
展开全部
虽然我没看见你的程序,我觉得问题出在:你的指针变量(*P)指向的空间是否足够大?

请看我下面的程序:
#include<stdio.h>

int main()
{
char s[101];

while(gets(s),s[0]!='0')
{
puts(s);
}
return 0;
}
只要你输入的不超过50个汉字(每个汉字占2个字节),都能完好输出的
注意:输入0结束

补充回答:
你的错误就在gets和puts的语句啊,应该这样修改:
gets(&(p+i)->name); //////////////去掉后面的[21]
puts(&(p+i)->name); //////////////去掉后面的[21]

你不清楚它们之间的区别吗?把文件简化一下:

char name[21];
gets(name);/////////不能用gets(name[21])
puts(name);/////////不能用puts(name[21])

name表示字符数组的首地址,也可以看成字符串
而name[21]什么都不是,是一种完全错误的写法
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
641038654

2021-04-07 · TA获得超过10.9万个赞
知道顶级答主
回答量:7.1万
采纳率:88%
帮助的人:7493万
展开全部
在C程序中显示汉字<br>
<br>
<br>
<br>在许多C程序设计中,要用到汉字进行提示或人机交互,而现行的Turbo
C集成开发环境不是汉化的,如何编制能显示汉字的C程序呢?<br>
<br>
下面的方法可以帮你在西文环境下显示汉字。这种方法是调用中文汉字库进行汉字显示。国家标准规定:汉字库分94个区,每个区有94个汉字(以位作区别),每个汉字在汉字库中有确定的区和位编号,这就是汉字的区位码。每个汉字在库中是以点阵字模形式存储的,一般采用16×16点阵(32字节)、24×24点阵(72字节),每个点用一个二进制位(0或1)表示,对应在屏幕上显示出来,就是相应的汉字。<br>
<br>
由于在中文环境下,输入的是汉字的内码,我们必须将之转换成区位码,算出偏移量,从字库中找到对应的汉字,将其字模显示即可。<br>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DWing124
2008-12-08 · TA获得超过316个赞
知道答主
回答量:102
采纳率:0%
帮助的人:0
展开全部
C语言中的字符串有个很重要的标记就是结束标记 '\0'
在你输入结束之后应该用过程序把字符串最后加上 \0, 这样才不会多输出其他的字符

如果你用scanf("%s",p); 这样得到的字符串应该没有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式