| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 554 人关注过本帖
标题:遇到难题了,Help me!!~~~我用的教材“C语言入门经典(第四版)”
只看楼主 加入收藏
wzl963358694
Rank: 2
等 级:论坛游民
帖 子:35
专家分:17
注 册:2013-3-10
结帖率:66.67%
收藏
已结贴  问题点数:16 回复次数:9 
遇到难题了,Help me!!~~~我用的教材“C语言入门经典(第四版)”
我又遇到难题了,o(︶︿︶)o 唉……这个问题想了老长时间,就是想不通,可能我水平有限,真的学不动了,可是我真的很喜欢编程,喜欢坐在计算机面前,敲代码的这种感觉……
我用的是“C语言入门经典 第四版” 作者lvor Horton 的书,现在学到了指针一节就看得有点吃力了、、、想在这个论坛上找些用着同样教材的同学们(或是大神们)一起学习……加QQ:963358694
  言归正传:我把我的难题写出来:
图片附件: 游客没有浏览图片的权限,请 登录注册


源码附上:
程序代码:
/* Program 7.12 Arrays of Pointers to Strings */
#include <stdio.h>

const size_t BUFFER_LEN = 512;              /* Size of input buffer      */

int main(void)
{
  char buffer[BUFFER_LEN];                  /* Store for strings         */
  char *pS[3] = { NULL };                   /* Array of string pointers  */
  char *pbuffer = buffer;                   /* Pointer to buffer         */
  size_t index = 0;                         /* Available buffer position */

  printf("\nEnter 3 messages that total less than %u characters.", BUFFER_LEN-2);

  
  for(int i=0 ; i<3 ; i++)
  {
    printf("\nEnter %s message\n", i>0 ? "another" : "a" );
    pS[i] = &buffer[index];                

    
    for( ; index<BUFFER_LEN ; index++)      
      if((*(pbuffer+index) = getchar()) == '\n')
        {
          *(pbuffer+index++) = '\0';    
          break;
        }

   
    if((index == BUFFER_LEN) && ((*(pbuffer+index-1) != '\0') || (i<2)))
    {
      printf("\nYou ran out of space in the buffer.");
      return 1;
    }
  }

  printf("\nThe strings you entered are:\n\n");
  for(int i = 0 ; i<3 ; i++)
    printf("%s\n", pS[i]);

  printf("The buffer has %d characters unused.\n",
                     BUFFER_LEN-index);
  return 0;
}
搜索更多相关主题的帖子: C语言 
2013-05-30 21:16
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:4 
工作中如果写出“*(pbuffer+index++) = '\0'; ”这样的代码,估计会被点的,一般老外很喜欢这种写法。

加上那个条件主要是想,换行后把下一个字符置为0,目的是是的字符串保证 0 结尾,否则就很可能没有 0 导致内存访问违规了

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-05-30 21:22
wzl963358694
Rank: 2
等 级:论坛游民
帖 子:35
专家分:17
注 册:2013-3-10
收藏
得分:0 
回复 2楼 yuccn
图片附件: 游客没有浏览图片的权限,请 登录注册
这个 i<2 的作用能说的在通俗点么?没懂~~楼主、、
2013-05-30 21:46
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:4 
觉得horton就是个大骗子。vs20xx入门经典从05-10版本本换汤不换药。

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2013-05-30 22:09
wzl963358694
Rank: 2
等 级:论坛游民
帖 子:35
专家分:17
注 册:2013-3-10
收藏
得分:0 
回复 4楼 lonmaor
楼主也看他的书?
2013-05-30 22:20
wzl963358694
Rank: 2
等 级:论坛游民
帖 子:35
专家分:17
注 册:2013-3-10
收藏
得分:0 
回复 2楼 yuccn
懂了~~~~
2013-05-30 22:41
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:4 
以下是引用yuccn在2013-5-30 21:22:50的发言:

工作中如果写出“*(pbuffer+index++) = '\0'; ”这样的代码,估计会被点的,一般老外很喜欢这种写法。

加上那个条件主要是想,换行后把下一个字符置为0,目的是是的字符串保证 0 结尾,否则就很可能没有 0 导致内存访问违规了

回答的有道理,主要就是保证,字符串结尾

Maybe
2013-05-31 00:44
bccnjj
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2012-2-16
收藏
得分:4 
我建议你看下谭浩强的书
2013-05-31 09:32
hsjjgm
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:189
注 册:2013-4-27
收藏
得分:4 
不懂
2013-05-31 11:21
wzl963358694
Rank: 2
等 级:论坛游民
帖 子:35
专家分:17
注 册:2013-3-10
收藏
得分:0 
回复 8楼 bccnjj
广大的网友不都说他的书不好么???所以我才买他的书、、
2013-05-31 17:55
快速回复:遇到难题了,Help me!!~~~我用的教材“C语言入门经典(第四版)”
数据加载中...
 
   



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

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