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]); 展开
可能没说清楚,我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]); 展开
15个回答
展开全部
实现简单的英汉词典,词库就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;
实现功能:
输入单词时,可以输出相应的中文
输入中文时,可以输出相应的英文
如果输入的单词或者中文查找不存在时,则输出"你所查找的内容不存在,请重新输入"。
【要求使用链表来实现,并且直至输入能查找的词时程序才退出,只要查找不到就要一直重复输入】
提供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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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]什么都不是,是一种完全错误的写法。
请看我下面的程序:
#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]什么都不是,是一种完全错误的写法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
虽然我没看见你的程序,我觉得问题出在:你的指针变量(*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]什么都不是,是一种完全错误的写法
请看我下面的程序:
#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]什么都不是,是一种完全错误的写法
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在C程序中显示汉字<br>
<br>
<br>
<br>在许多C程序设计中,要用到汉字进行提示或人机交互,而现行的Turbo
C集成开发环境不是汉化的,如何编制能显示汉字的C程序呢?<br>
<br>
下面的方法可以帮你在西文环境下显示汉字。这种方法是调用中文汉字库进行汉字显示。国家标准规定:汉字库分94个区,每个区有94个汉字(以位作区别),每个汉字在汉字库中有确定的区和位编号,这就是汉字的区位码。每个汉字在库中是以点阵字模形式存储的,一般采用16×16点阵(32字节)、24×24点阵(72字节),每个点用一个二进制位(0或1)表示,对应在屏幕上显示出来,就是相应的汉字。<br>
<br>
由于在中文环境下,输入的是汉字的内码,我们必须将之转换成区位码,算出偏移量,从字库中找到对应的汉字,将其字模显示即可。<br>
<br>
<br>
<br>在许多C程序设计中,要用到汉字进行提示或人机交互,而现行的Turbo
C集成开发环境不是汉化的,如何编制能显示汉字的C程序呢?<br>
<br>
下面的方法可以帮你在西文环境下显示汉字。这种方法是调用中文汉字库进行汉字显示。国家标准规定:汉字库分94个区,每个区有94个汉字(以位作区别),每个汉字在汉字库中有确定的区和位编号,这就是汉字的区位码。每个汉字在库中是以点阵字模形式存储的,一般采用16×16点阵(32字节)、24×24点阵(72字节),每个点用一个二进制位(0或1)表示,对应在屏幕上显示出来,就是相应的汉字。<br>
<br>
由于在中文环境下,输入的是汉字的内码,我们必须将之转换成区位码,算出偏移量,从字库中找到对应的汉字,将其字模显示即可。<br>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言中的字符串有个很重要的标记就是结束标记 '\0'
在你输入结束之后应该用过程序把字符串最后加上 \0, 这样才不会多输出其他的字符
如果你用scanf("%s",p); 这样得到的字符串应该没有问题
在你输入结束之后应该用过程序把字符串最后加上 \0, 这样才不会多输出其他的字符
如果你用scanf("%s",p); 这样得到的字符串应该没有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询