C语言:解密藏头诗

zhbzljxw 2010-03-07 11:37:37
输入一首四言绝句,怎么显示“烫XXX”,然后就出错了,而不是显示每句诗的首字呢?

#include<stdio.h>

char * change(char s[][20],char t[]);

int main(void)
{
char s[4][20],t[10],*p=NULL;
int i;

printf("Input the poem:\n");
for(i=0;i<4;i++)
scanf("%s",&s[i][20]);
p=change(s,t);
printf("%s\n",p);

return 0;
}

char * change(char s[][20],char t[])
{
int j=0;
for(j=0;j<4;j++)
{
t[2*j]=s[j][0];
t[2*j+1]=s[j][1];
}
t[2*j]='\0';

return t;
}
...全文
1536 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
FoxMessire 2010-03-09
  • 打赏
  • 举报
回复
没法输入汉字,不知道怎么在命令行里面如数汉字,请大家指教,要不没法验证这个程序是否正确
Player1005 2010-03-09
  • 打赏
  • 举报
回复
汉字半字的asc码 大于127的吧?
把char改成unsigned char试试?
Louyi730385 2010-03-08
  • 打赏
  • 举报
回复
#include <stdio.h>

char * change(char s[][20],char t[]);

int main(void)
{
char s[4][20],t[20],*p=NULL;
int i;

printf("Input the poem:\n");
for(i=0;i <4;i++)
scanf("%s",s[i]);
p=change(s,t);
printf("%s\n",p);

return 0;
}
char * change(char s[][20],char t[])
{
int j=0;
for(j=0;j <4;j++)
{
t[2*j]=s[j][0];
t[2*j+1]=s[j][1];
}
t[2*j]='\0';

return t;
}
//这是我写的程序,已经顺利通过。O(∩_∩)O~
niu05500230 2010-03-08
  • 打赏
  • 举报
回复
帮你顶一下也算是支持你吧
cyc632301500 2010-03-08
  • 打赏
  • 举报
回复
额 好深奥~~
我现在也是学习c语言
cwj2009 2010-03-08
  • 打赏
  • 举报
回复
scanf("%s",s[i]); 同意楼上的
shashenyidaoOCEAN 2010-03-07
  • 打赏
  • 举报
回复
能用了告诉我,我也想知道是怎么回事!
canoe982 2010-03-07
  • 打赏
  • 举报
回复
scanf("%s",&s[i][20]);
这个应该会有问题,建议改为:
scanf("%s",s[i]);试试。
r11222 2010-03-07
  • 打赏
  • 举报
回复
你的t都还没有分配内存啊。。。。
加一句char t [20]吧.....
zhbzljxw 2010-03-07
  • 打赏
  • 举报
回复
引用 1 楼 pengzhixi 的回复:
很明显的越界错误了。

但是错在哪里呢?
pengzhixi 2010-03-07
  • 打赏
  • 举报
回复
很明显的越界错误了。
diablox0147 2010-03-07
  • 打赏
  • 举报
回复
scanf("%s",&s[i][20]);
这里如果是3的话就越界了,&s[3][19]是数组的最后一个元素的地址
自由建客 2010-03-07
  • 打赏
  • 举报
回复
引用 7 楼 liuxingjin 的回复:
x86的汉字还占4个字节,最好多分点。要不还越界

那是 Linux 中的 w_char ,Windows 中的只占两字节。何况楼主的也不是 w_char ,那就以 gbk 论了。
jue222 2010-03-07
  • 打赏
  • 举报
回复

一个汉字至少两个字节
liuxingjin 2010-03-07
  • 打赏
  • 举报
回复
x86的汉字还占4个字节,最好多分点。要不还越界
liuxingjin 2010-03-07
  • 打赏
  • 举报
回复
汉字占的字节比字母多啊,t[10]不够 8*2=16 越界了

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧