在C语言中strchr 是什么意思?

在三级数据库的上机题目中有这样一道题目、
以行为单位对行中空格或者标点符号为分隔的所有单词进行倒排
那位朋友对这个题目了解的
请帮帮忙解释一下
多谢!
例如句子是
this is a flower
在运行后为
flower a is this
可不可以写的简单一点啊!

  strchr所在头文件:#include <string.h>

  功能:用来查找某字符在字符串中首次出现的位置。

  函数原型:char * strchr (const char *str, int c);

  参数说明:str 为要查找的字符串,c 为要查找的字符。

  返回值:如果找到指定的字符则返回该字符所在地址,否则返回 NULL。

  注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。

  示例:

  #include <stdio.h>
  #include <stdlib.h>
  #include <string.h>
  int main(){
      char *s = "0123456789012345678901234567890";
     ã€€char *p;
      p = strchr(s, '5');
     ã€€printf("%ld\n", s);
     ã€€printf("%ld\n", p);
     ã€€system("pause");
      return 0;
  }
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-04-02
我理解为比如有一个字符串:abc dbc cdb
以空格为分隔,分成abc dbc cdb三个字符串,然后再按cdb dbc abc排列。
第2个回答  推荐于2017-09-26
原型:extern char *strchr(char *s,char c);

用法:#include <string.h>

功能:查找字符串s中首次出现字符c的位置

说明:返回首次出现c的位置的指针,如果s中不存在c则返回NULL。

举例:

// strchr.c

#include <syslib.h>
#include <string.h>

main()
{
char *s="Golden Global View";
char *p;

clrscr();

strchr(s,'V');
if(p)
printf("%s",p);
else
printf("Not Found!");

getchar();
return 0;
}本回答被提问者采纳
第3个回答  2007-04-02
strchr()函数的作用是:返回一个字符串在另一个字符串中首次出现的位置到后者末尾的子字符串.

#include <stdio.h>
#include <stdlib.h>
char *GetStr(char *Buffer,int n,char Split,char *Target);
int main(int argc, char *argv[])
{
int i,j,k;
char split;
char buffer[512];
char target[512];
char tmp_buff[128];
char tmp_targ[128];
char tmp_swap[128];
FILE *pf;

split = ',';
i=0;j=0;k=0;

pf = fopen("1.txt","r");

while ( NULL!=(fgets(buffer,sizeof(buffer),pf)) )
{
j=0;
memset(tmp_buff,0,sizeof(tmp_buff));

if((buffer[strlen(buffer)-1]==0x0a)||(buffer[strlen(buffer)-1]==0x0d))
strncpy(tmp_buff,buffer,strlen(buffer)-1);
else
strcpy(tmp_buff,buffer);

for(i=0;i<strlen(tmp_buff);i++)
if(tmp_buff[i]==split)
j++;

for(i=0;i<j+1;i++)
{
memset(target,0,sizeof(target));
GetStr(tmp_buff,i,split,target);
/*strrev(target);*/
for(k=strlen(target)-1;k>=0;k--)
printf("%c",target[k]);
if(i!=j)
printf("%c",split);
}
printf("\n");
memset(buffer,0,sizeof(buffer));
}
fclose(pf);
}

char *GetStr(char *Buffer,int n,char Split,char *Target)
{
int i,j=0;
memset(Target,0,sizeof(Target));
for(i=0;i<strlen(Buffer);i++)
{
if((Buffer[i]!=Split)&&(n==0))
Target[j++]=Buffer[i];
if(Buffer[i]==Split)
n--;
if((n<0)||(Buffer[i]==0x0d)||(Buffer[i]==0x0a))
break;
}
return (Target);
}

因为不知道题目要求倒排之后的要求,
我就把结果输出到屏幕上了.

1.txt的内容如下:
123,abc,asd
321,abc

屏幕输出结果:
321,cba,dsa
123,cba
相似回答