首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

strchr的用法:解决办法

2012-02-05 
strchr的用法:#includestring.h#includestdio.hintmain(void){charstring[15]char*ptr,cr strcpy(s

strchr的用法:
#include   <string.h>  
#include   <stdio.h>  

int   main(void)  
{  
      char   string[15];  
      char   *ptr,   c   =   'r ';  

      strcpy(string,   "This   is   a   string ");  
      ptr   =   strchr(string,   c);  
      if   (ptr)  
            printf( "The   character   %c   is   at   position:   %d\n ",   c,   ptr-string);  
      else  
            printf( "The   character   was   not   found\n ");  
      return   0;  
}
为什么结果是The   character   g   is   at   position:15

[解决办法]
函数名称: strchr
函数原型: char* strchr(char* str,char ch);
函数功能: 找出str指向的字符串中第一次出现字符ch的位置
函数返回: 返回指向该位置的指针,如找不到,则返回空指针
参数说明: str-待搜索的字符串,ch-查找的字符
所属文件: <string.h>

#include <string.h>
#include <stdio.h>
int main()
{
char string[15];
char *ptr, c= 'r ';
strcpy(string, "This is a string ");
ptr=strchr(string, c);
if (ptr)
printf( "The character %c is at position: %d\n ",c,ptr-string);
else
printf( "The character was not found\n ");
return 0;
}
[解决办法]
char string[15];
strcpy(string, "This is a string "); //空间不足,溢出了!!

==》
char string[20]; //定义足够的空间
[解决办法]
#include <string.h>
#include <stdio.h>

int main(void)
{
char string[15];
char *ptr, c = 'r ';

strcpy(string, "This is a string ");
ptr = strchr(string, c);
if (ptr)
printf( "The character %c is at position: %d\n ", c, ptr-string);
else
printf( "The character was not found\n ");
return 0;
}

程序的问题 1.string数组空间不够

2.你的那个输出是按照自己的设计输出
你的程序是把第一个元素的序号视为0 (ptr-string)
也可以设为1(ptr-string+1)

热点排行