CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

看看我编的一个取得字符串长度的函数。

楼主cg_i(半点闲)2004-05-04 17:45:42 在 C/C++ / C语言 提问

编辑器:TC2.0  
  操作系统:WIN98  
  个人水平:刚接触C。  
   
  我自已编了一个,获取输入的字符串长度的函数。下面的程序经过测试可以达到预期效果,请大家帮我看看我的思路对不对,再看看我的代码是否有改进的地方(对自已没信心)。  
  /*这是一个取得输入字符串长度的程序   2004-5-4*/  
  #include<stdio.h>  
  main()  
  {  
      char   *str;   /*字符型指针变量,用于存放输入字符串的首字符地址*/  
      scanf("%s",&*str);   /*取得输入的字符串并把首地址赋给指针*/  
      getchar();  
      printf("%d\n",strleght(str));  
      getchar();  
  }  
   
  /*计算字符串长度的函数*/  
  int   strleght(char   *strvar)  
  {  
      int   js;  
      for(js=1;*strvar!='\0';js++)/*当检测到字符尾退出循环*/  
      {  
  *strvar++;  
      }  
      return(js-1);/*减掉字符尾,得到的实际字符个数并返回给函数*/  
  }  
   
  注:请问,C中有没有现成获取字符串长度的函数。 问题点数:20、回复次数:8Top

1 楼cngdzhang()回复于 2004-05-04 17:53:23 得分 0

有  
  #include   <string.h>  
   
  char   str[100]="hello";  
   
  strlen(str);  
   
  Top

2 楼newegg2002(同志们,同胞们,大学的四年,是扎实基础的四年!!)回复于 2004-05-04 17:54:52 得分 5

scanf("%s",&*str);   //这句scanf("%s",str);   这样不就行了么..  
  这不只是个习惯问题,,要理解scanf后面那个参数的真正含义..  
   
  有这样的函数啊..最为常见是就是  
  #include   <string.h>  
  int   strlen(char   *c);Top

3 楼cngdzhang()回复于 2004-05-04 17:55:25 得分 10

我写一个   :)  
   
  int   myStrlen(char   *s)  
  {  
        char   *p=s;  
        while(*p)   ++p;  
        return(p-s);  
  }  
  Top

4 楼cngdzhang()回复于 2004-05-04 17:59:31 得分 0

#include<stdio.h>  
  main()  
  {  
      char   *str;         //这里不对,改为char   *str[100]要先分配内存    
      scanf("%s",&*str);   //scanf("%s",str);就行,但是scanf输入不了,有空格的字符串   gets可以  
      getchar();  
      printf("%d\n",strleght(str));  
      getchar();  
  }  
   
  改为  
  #include<stdio.h>  
  main()  
  {  
      char   str[1000];  
      gets(str);    
      printf("%d\n",strleght(str));  
      getchar();  
  }  
   
  Top

5 楼antijpn(antijpn)回复于 2004-05-04 18:16:00 得分 5

要这么长吗?  
  可以更加简单的  
  unsigned   int   strlength(const   char   *const   str)  
  {  
  unsigned   int   iLength=0;  
  while(*str++)  
  iLength++;  
  return   iLength;  
  }  
   
  或者  
  unsigned   int   strlength(const   char   *   const   str)  
  {  
  unsigned   int   iLength=0;  
  for(iLength=0;*str++;iLength++)  
  NULL;  
  return   iLength;  
  }Top

6 楼cg_i(半点闲)回复于 2004-05-04 18:45:04 得分 0

非常的感谢大家~~~~还有些不懂之处请教:  
  1、strlen这个函数,可不可以获取任意长度的字符串长度。  
  2、scanf("%s",&*str);   //这句scanf("%s",str);   这样不就行了么..(谢谢了,下去我再看看书研究一下)。  
  3、char   *str;     //这里不对,改为char   *str[100]要先分配内存如果改成这样的  
  先分配内存后,是不是会降低函数的通用性呢(会影响其接受任意长度的字符)?  
   
   
  初学问题多,请大家不吝赐教。。。。  
  Top

7 楼cngdzhang()回复于 2004-05-04 18:54:03 得分 0

是我写多了一个*   ,,不好意思  
  char   *str;         //这里不对,改为char   *str[100]要先分配内存  
  改为  
  char   *str;         //这里不对,改为char   str[100]要先分配内存  
   
  strlen这个函数,可以啊,可以获得任意长度的字符串长度,  
  当然,字符串总是有长度限制的,现实中很少会有数百兆的字符串的  
   
  如果要动态长度  
  可以这样:  
  char   *str;  
  str=(char   *)malloc(1000*sizeof(char));   //动态分配  
  free(str);       //释放  
   
  或  
  char   *str;  
  str=new   char[1000];   //动态分配  
  delete   []str;       //释放  
   
   
  Top

8 楼tangxiaosan001(阿三)回复于 2004-05-04 19:36:09 得分 0

^_^。Top

相关问题

  • javascript中取得字符串长度的函数是what?
  • 快来抢分呀~~求教:关于取得字符串的长度的函数~~
  • 如何定义一个整型的数组,取得字符串长度、取得字符串左边几个字符串、取得字符串右边几个字符串的函数分别是什么呀?
  • 求字符串长度的函数
  • 字符串长度函数是什么?
  • 问个很简单的问题。怎样获得字符串的长度。取得字符串的子集用什么函数?
  • 问个很简单的问题。怎样获得字符串的长度。取得字符串的子集用什么函数?
  • 使用哪个函数来取得某个字符特定长度的重复字符串?
  • 使用哪个函数来取得某个字符特定长度的重复字符串?
  • 如何取得字符串长度?

关键词

  • 函数
  • 字符
  • 内存
  • js
  • 字符串
  • 长度
  • strleght
  • ilength
  • scanf
  • 改为

得分解答快速导航

  • 帖主:cg_i
  • newegg2002
  • cngdzhang
  • antijpn

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo