注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

融智技术学院

融智技术学院163分站,为广大好友提供更多的帮助

 
 
 

日志

 
 

【C语言每日一问】转换字符数组为字符串数组的问题  

2014-04-01 13:18:32|  分类: C语言 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

问题:嗨,我是编程的新人,我需要一些帮助,关于转换字符数组为字符串,我不确定哪里错了。我需要获取用户的输入,通过%c,我输入了一些作为第一次输入——aabcc,然后第二次输入——fsdff,接着第三次输入——rewrr,继续第四次输入——zzxcc,最后输入——asdfg.

但是输出给我的数组:1=aabcc2=fsdf(有一个丢失了)3=f,456都没能正确的显示,提前表示感谢。

  • int main()
  • {
  •    int i, j;
  • char ch[5][6];
  • char c[5][5];
  •  
  • for (i = 0; i < 5; i++)
  •     for (j = 0; j<5; j++)
  •         scanf("%c", &c[i][j]); // get user input
  •  
  • memcpy(ch[0], c[0], 5);
  • ch[0][5] = '\0';
  • memcpy(ch[1], c[1], 5);
  • ch[1][5] = '\0';
  • memcpy(ch[2], c[2], 5);
  • ch[2][5] = '\0';
  • memcpy(ch[3], c[3], 5);
  • ch[3][5] = '\0';
  • memcpy(ch[4], c[4], 5);
  • ch[4][5] = '\0';
  •  
  • printf("array 1 = %s, array 2 = %s , array 3 = %s , array 4 = %s , array 5 = %s ", ch[0], ch[1], ch[2], ch[3], ch[4]);
  • }

 

 

回答:改变下面的scanf

  • scanf("%c", &c[i][j]);

为:

  • scanf(" %c", &c[i][j]);
  •        ^
  •        |
  •     space here

后面的就是原因,你键入输入以 aabcc<Enter>,这有6个字符在输入缓冲区中。scanf(“%c”)读取a,a,b,c和下一个c,解释它们为aabcc,但是新一行的字符也在缓冲区中。那就是为什么在你尝试打印它们时,它们已经被输出了。

温馨提示:您的支持与理解,是我们工作最大的动力。如果您是从网上购买的图书,请在对应的网店,给予本书一个好评,我们将衷心感谢!!!
以下是《轻松学C语言》对应的购书评论地址:
当当网http://product.dangdang.com/23246575.html
亚马逊http://www.amazon.cn/dp/B00CIXGTOS
京东网http://item.jd.com/11235318.html

  评论这张
 
阅读(9)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017