c语言如何查找字符串?
C语言中的标准函数库中的strchr()函数可以实现查找字符串中的某个字符。C语言strchr()函数:查找某字符在字符串中首次出现的位置头文件:#include strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:char * strchr (const char *str, int c);【参数】str 为要查找的字符串,c 为要查找的字符。strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr() 函数。
C语言中以字符串为返回值的函数的问题,困扰我好几天了
第一段代码不能正常输出是因为子函数退出,里面的s字符串里面的内容(假设输入"123"),也就是所占的内存已经释放(就是不能保证不变,记得!不是清空,只是系统需要的时候就用,会把数据给覆盖掉,如果不需要重新开辟内存,系统是不会去管他的),但是s本身的值是在等赋给ptr才释放。虽然ptr指向"123",但是在puts(ptr);执行时(字符输出在频幕之前),"123"所占的内存已经重新覆盖,你可以调试进入puts()一步步就可以看到。数据已经覆盖淡然就不能输出正确结果;
第二段代码能输出正确结果就是因为在执行strcpy(str,Getstr());时,"123"这段内存没有被覆盖,你可以调试进入strcpy()看,这个函数是用汇编写的。而且因为这个是直接把整个字符复制过来,所以之后不会再有问题。
第三段代码我运行的时候没有想你说的那样把puts函数改成printf就可以输出正确结果,你应该是搞错了吧。
以上都是在VC6.0测的,没有在GCC下搞。
最后说一下,遇到这种问题可以用调试的,一步步调,看一下内存变化就看出问题原因。
望采纳。
c语言查找字符串
字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“b”,s[9]="j",而字符串的零位正是它的长度,c语言查找字符串方法为:1、首先,定义一个字符数组变量,可以这么写。2、然后输入字符的长度。3、接下来就可以直接赋值字符串。4、也可以定义多个字符串,可以写成这样。5、使用字符串时,建议加上该头文件。6、此外,还可以使用函数为其初始化。注意事项:尽管形式字符串可以有任意(但有限)的长度,实际语言的字符串的长度经常被限制到一个人工极大值。有两种类型的字符串数据类型: “定长字符串”,它有固定的极大长度并且不管是否达到了这个极大值都使用同样数量的内存。