C语言,问一个函数,检索并且返回某字符在某字符串中第一次出现的位置。是什么函数,返回值有哪些?急

作者&投稿:蓍云 (若有异议请与网页底部的电邮联系)
一个C语言关于字符串操作的函数,返回值为指针型字符串~

你的写法有问题...
char ele[200];
s=ele;
ele为函数内部定义的定长数组,等函数过程结束,对应的内存就会被自动释放,所以这样写是不对的
加了printf也不对,只是printf可能延迟了ele的释放

第一段代码不能正常输出是因为子函数退出,里面的s字符串里面的内容(假设输入"123"),也就是所占的内存已经释放(就是不能保证不变,记得!不是清空,只是系统需要的时候就用,会把数据给覆盖掉,如果不需要重新开辟内存,系统是不会去管他的),但是s本身的值是在等赋给ptr才释放。虽然ptr指向"123",但是在puts(ptr);执行时(字符输出在频幕之前),"123"所占的内存已经重新覆盖,你可以调试进入puts()一步步就可以看到。数据已经覆盖淡然就不能输出正确结果;
第二段代码能输出正确结果就是因为在执行strcpy(str,Getstr());时,"123"这段内存没有被覆盖,你可以调试进入strcpy()看,这个函数是用汇编写的。而且因为这个是直接把整个字符复制过来,所以之后不会再有问题。
第三段代码我运行的时候没有想你说的那样把puts函数改成printf就可以输出正确结果,你应该是搞错了吧。

以上都是在VC6.0测的,没有在GCC下搞。
最后说一下,遇到这种问题可以用调试的,一步步调,看一下内存变化就看出问题原因。
望采纳。

如下: 函数名: strstr   功 能: 在字符串中查找指定字符串的第一次出现   用 法: char *strstr(char *str1, char *str2);   strstr原型:extern char *strstr(char *haystack, char *needle);   头文件:#include <string.h>   功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。   说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。 编辑本段函数原型   1.Copyright 1990 Software Development Systems, Inc.   </B>char *strstr( const char *s1, const char *s2 )   {   int len2;   if ( !(len2 = strlen(s2)) )   return (char *)s1;   for ( ; *s1; ++s1 )   {   if ( *s1 == *s2 && strncmp( s1, s2, len2 )==0 )   return (char *)s1;   }   return NULL;   }   2.Copyright 1986 - 1999 IAR Systems. All rights reserved   char *strstr(const char *s1, const char *s2)   {   int n;   if (*s2)   {   while (*s1)   {   for (n=0; *(s1 + n) == *(s2 + n); n++)   {   if (!*(s2 + n + 1))   return (char *)s1;   }   s1++;   }   return NULL;   }   else   return (char *)s1;   } 编辑本段举例   // strstr.c   #include <syslib.h>   #include <string.h>   main()   {   char *s="Golden Global View";   char *l="lob";   char *p;   clrscr();   p=strstr(s,l);   if(p)   printf("%s",p);   else   printf("Not Found!");   getchar();   return 0;   }   语法:* strstr(str1,str2)   str1: 被查找目标 string expression to search.   str2:要查找对象 The string expression to find.   该函数返回str2第一次在str1中的位置,如果没有找到,返回NULL   The strstr() function returns the ordinal position within str1 of the first occurrence of str2. If str2 is not found in str1, strstr() returns 0.   例子:   功能:从字串” string1 onexxx string2 oneyyy”中寻找”yyy”   (假设xxx和yyy都是一个未知的字串)   char *s=” string1 onexxx string2 oneyyy”;   char *p;   p=strstr(s,”string2”);   if(p==NULL) printf(“Not Found!”);   p=strstr(p,”one”);   if(p==NULL) printf(“Not Found!”);   p+=strlen(“one”);   printf(“%s”,p);   说明:如果直接写语句p=strstr(s,”one”),则找到的是onexxx string2 oneyyy,不符合要求   所以需采用二次查找法找到目标

strcspn吧,原型:size_t strcspn(const char *s1,const char *s2);

这个最好用指针char *p(char *a,char n)
{while(*a!=n)<br>a++;<br>return a;<br>}


c语言: 编写递归函数把输入的一个负整数转换成二进制输出
根据评论要求,改进代码:1、函数getBCode是题目要的递归函数,实现转二进制(最高位是符号位)。思路是十进制数绝对值除以2求余,得到反向二进制原码,反向创建链表保存结果,最终得到的单向链表就是完整二进制数原码,之后根据正负性,负数取反+1。链表头添加符号位。2、函数freeBny为释放链表,如要...

C语言:以下程序包含一个自定义函数,该函数的功能是接收1个整型参数n...
第一个问号:fun(10)第二个问号:fun(15)include<stdio.h> long fun(int n){ long i,sum=1;for(i=1;i<=n;i++) \/\/ sum=sum*i;return sum;} main(){ long s=0;s= fun(10) + fun(15) ; \/\/ 10!zhi+15!printf("sum=%ld",s);} ...

用C语言编写一个可以产生1~99随机数的函数
1,99]的区间之内。示例代码如下:include<stdio.h>#include<stdlib.h>#includeint main(){int a,i;srand((unsigned)time(NULL));\/\/初始化随机数for(i=0;i<200;i++){a=rand()%99+1;\/\/随机数的产生调用rand()函数printf("%d\\t",a);}printf("\\n");return 0;} ...

C语言 写出一个通用函数,该函数从一个字符指针数组中寻找指定的一个字符...
include<stdio.h>#include<string.h>int strSearch(char *str[], char *a){int find=0,i;for(i=0;i<2;i++) if(strcmp(str[i],a)==0) {find=1;break;}return find;}int main(){char *str[]={"search","abc"};printf("%d\\n",strSearch(str, "abc"));return 0;} ...

c语言中怎么调用函数?谢谢
main(){int a=1, b=2, c;c = fun(a, b); \/\/ 函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值}\/\/ 自定义函数funint fun(int x, int y) \/\/ 函数首部{ \/\/ {}中的语言为函数体return x>y ? x : y; \/\/ 返回x和y中较大的一个数} ...

C语言中scanf()与gets()函数的区别,哪一个可以读入空格啊?
2.scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\\0',但是回车,空格和tab键仍会留在输入的缓冲区中。gets:可接受回车键之前输入的所有字符,并用'\\n'替代 '\\0'.回车键不会留在输入缓冲区中 3.gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以...

若调用一个函数,且此函数中没有return语句,则正确的说法是该函数...
答案是D ,即使函数中没有return语句,若函数不声明为void型,调用函数的时候还是可以得到int型的返回值。但是一个不确定的值,所以应该选D。return 表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。 return通常是...

C语言题 编写一个主函数,计算并输出表达式1+2(平方)3(平方)+...+10...
include<stdio.h> main(){int i,sum=0;for(i=2;i<=10;i++){sum+=i*i;} printf("%d",1+sum);}

C语言中定义cube函数。该函数有一个double型的参数,其作用是计算某数...
以下是定义 cube 函数的 C 语言代码,其中输入参数为 double 类型,输出结果也为 double 类型,用于计算某个数的立方:double cube(double num) { return num * num * num;} 调用该函数的方式为:double result = cube(3.0);printf("3.0 的立方为:%.2f", result);该函数会返回输入参数的...

定义一个函数test1,接受两个参数a,b,返回求两个参数的平方根
下面是一个定义函数test1的C语言代码:```include <math.h> double test1(double a, double b) { double result = sqrt(a * a + b * b);return result;} ```在这个函数中,我们使用了C语言库中的math.h头文件中提供的sqrt函数,其作用是求输入参数的平方根。该函数的实参为a * a + b...

禹城市15217809224: C语言,问一个函数,检索并且返回某字符在某字符串中第一次出现的位置.是什么函数,返回值有哪些?急 -
方怡培元: 如下: 函数名: strstr 功能: 在字符串中查找指定字符串的第一次出现 用法: char *strstr(char *str1, char *str2); strstr原型:extern char *strstr(char *haystack, char *needle); 头文件:#include功能:从字符串haystack中寻找needle第一次出现...

禹城市15217809224: 怎样在C语言中用函数返回一个数的地址呢? -
方怡培元: 首先函数返回一个指针类型即返回地址. 例: int * func(void) { int a= 10; int *p = &a; return p; }

禹城市15217809224: C语言上的问题编写一个函数,返回一个double数组中存储的最大数值的索引,并在一个简单的程序中测试. -
方怡培元: #include <stdio.h> double sump(double date[], int n) { double max; int i, back; for(i=0; i<n; i++) { if(max<date[i]) { max=date[i]; back=i; } } return back; } int main(void) { double data[10]= {1.11, 22.22, 3.33, 4.44, 5.55, 11.11, 7.77, 8.88, 12.22, 17.33 }; int...

禹城市15217809224: 用C语言编一个函数能比较字符串,并返回其中的长字符串 -
方怡培元: /********************************************** 字符串长度比较* 默认均以结束符'\0'结尾* 当长度不等时返回较长字符串首地址* 当长度相等时返回第一个字符串首地址* 其他情况返回空指针NULL*********************************************/#define ...

禹城市15217809224: 编写函数:计算并返回一个整数的平方. c语言 -
方怡培元: int pow1(int a){return a*a; }int main(){int m;scanf("%d", &m);printf("POW=%d\r\n", pow1(m) ); }

禹城市15217809224: C语言,编写find函数,在一维数组x中查找是否有key,若有返回该数组元素下标,否则返回1. -
方怡培元: #include<stdio.h> int find(int *a,int n,int key) //int a[10]里的10没有意义,直接写int a[]或int *a,一个意思 {int i;for(i=0;i<n;i++){if(a[i]==key)return i;}return -1;//我觉得返回-1更合理,非要返回1的话你自己改吧 } void main() {int n,i,m;int a[10];...

禹城市15217809224: C语言 编程一个函数,在一个数列里查找某个数X的位置,找到返回位置,找不到返回 - 1
方怡培元: int FindTheNum(int *a,int b,int num) //a为存储数据的数组,b为数组中数据个数,num为你要查找的数字 { int i = 0; while(b) { if (a[i] == num) { return i; } i++; b--; } return -1; }

禹城市15217809224: c语言 编写一个函数,其功能为搜索由第一个参数指定的字符串,在其中查找由第二个参数指定的字符第一次 -
方怡培元: 这样: #include<stdio.h> // 计算字符串长度 int len(char a[]) { int temp=0,i; for(i=0;a[i]!='\0';i++) temp++; return temp; } // 获取子串在源串中首次出现的位置索引 int index(char a[], char b[]) { int i,j,temp; for(i=0;i<len(a)-len(b);i++) { temp=i; j=0; while(j<...

禹城市15217809224: C语言 函数find功能是:在指针p所指数组中,查找值为x的元素,找到后,返回该元素的下标,否则返回 - 1,改正程序中语句错误,能够正确运行、 -
方怡培元: 答案:(1) 2行语句改为 int i=0;(2) 4行语句改为 while(*(p+i)!=x);(3) 7行语句改为 return i .分析:在函数find中,变量i没有赋初值,按照规则任意取值,所以程序不正确.在while循环条件中*p+i表示指针p指向地址元素值加i,不能起着指针移动作用,改为*(p+i)表示数组第i个元素值起着顺序查找作用.在函数中如果找到查找元素返回其下标,7行应该是return i ,而不是return 1.

禹城市15217809224: C语言字函数符合包返回一 -
方怡培元: 这个和string_search那个一样,只需改个函数名即可#include #include int string_in(char *str1, char *str2) { int i, j, k; int len1 = strlen(str1), len2 = strlen(str2); for (i = 0; ifor (j = 0, k = i; k if (str1[k]!=str2[j])break; } if (j >= len2)return 1; } return 0; } int ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网