读书人

strchr的用法:解决办法

发布时间: 2012-02-05 12:07:15 作者: rapoo

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)

读书人网 >C语言

热点推荐