永发信息网

C语言关于字符串的操作函数有哪些

答案:2  悬赏:20  手机版
解决时间 2021-02-07 15:54
  • 提问者网友:火车头
  • 2021-02-06 22:09
C语言关于字符串的操作函数有哪些
最佳答案
  • 五星知识达人网友:春色三分
  • 2021-02-06 22:40
string.h头文件中包含的字符串函数
void *memcpy(void *dest, const void *src, size_t n);//将n字节长的内容从一个内存地址复制到另一个地址;如果两个地址存在重叠,则最终行为未定义
void *memmove(void *dest, const void *src, size_t n);//将n字节长的内容从一个内存地址复制到另一个地址;与memcpy不同的是它可以正确作用于两个存在重叠的地址
void *memchr(const void *s, char c, size_t n);//在从s开始的n个字节内查找c第一次出现的地址并返回,若未找到则返回NULL
int memcmp(const void *s1, const void *s2, size_t n);//对从两个内存地址开始的n个字符进行比较
void *memset(void *, int, size_t);//用某种字节内容覆写一段内存空间
char *strcat(char *dest, const char *src);//在字符串dest之后连接上src
char *strncat(char *dest, const char *src, size_t n);//从src截取n个字符连接在字符串dest之后,返回dest字符串
char *strchr(const char* str, int ch);//从字符串str头开始查找字符ch首次出现的位置
char *strrchr(const char* str,int ch);//从字符串str尾开始查找字符ch首次出现的位置
int strcmp(const char *, const char *);//基于字典顺序比较两个字符串
int strncmp(const char *, const char *, size_t);//基于字典顺序比较两个字符串,最多比较n个字节
int strcoll(const char *, const char *);//基于当前区域设置的字符顺序比较两个字符串
char *strcpy(char* str1, const char* str2);//将str2拷贝给str1
char *strncpy(char* str1, const char* str2, size_t n);//截取str2的n个字符拷贝给str1
char *strerror(int);//返回错误码对应的解释字符串,参见errno.h(非线程安全函数)
size_t strlen(const char *);//返回一个字符串的长度
size_t strspn(const char *s, const char *strCharSet);//从字符串s的起始处开始,寻找第一个不出现在strCharSet中的字符,返回其位置索引值。换句话说,返回从字符串s的起始位置的完全由strCharSet中的字符构成的子串的最大长度。strspn为string span的缩写。不支持多字节字符集。
size_t strcspn(const char *s, const char *strCharSet);//从字符串s的起始处开始,寻找第一个出现在strCharSet中的字符,返回其位置索引值。换句话说,返回从字符串s的起始位置的完全由不属于strCharSet中的字符构成的子串的最大长度。strcspn为string complement span的缩写。不支持多字节字符集。
char *strpbrk(const char *s, const char *strCharSet);//在字符串s中查找strCharSet中任意字符第一次出现的位置的指针值。strpbrk为string pointer break缩写。不支持多字节字符集。
char *strstr(const char *haystack, const char *needle);//在字符串haystack中查找字符串needle第一次出现的位置,heystack的长度必须长于needle
char *strtok(char *strToken, const char *strDelimit );//将一个字符串strToken依据分界符(delimiter)分隔成一系列字符串。此函数非线程安全,且不可重入;但MSVC实现时使用了thread-local static variable因而是线程安全的单仍然是不可重入,即在单线程中不能对两个源字符串交替调用该函数来分析token,应当对一个字符串分析完成后再处理别的字符串。
size_t strxfrm(char *dest, const char *src, size_t n);//根据当前locale转换一个字符串为strcmp使用的内部格式
全部回答
  • 1楼网友:等灯
  • 2021-02-06 22:47

#include "stdio.h" char *word(char *str); char *in(void); int main() {     char *str1,*out;     str1=in();     out=word(str1);     puts(out);     getchar();     getchar(); } char *in(void)   //输入函数 {

    //char str[81];//返回的是局部变量,局部变量在函数执行完之后就会被销毁,当然,地址也不见了,所以函数返回的是一个无效的地址  static char str[81];     int i,c;     i=0;     while(i<80)     {     c=getchar();     str[i]=c;          if(c==' ' ||c=='\0' ||c=='\n')     {     str[i]='\0';     break;     }     i++;     }     return str; }

char *word(char *str)  //取单词时去掉除字母外的字符 {     //char out[81];  static char out[81];     char i,j;     i=0;     j=0;     while(str[i]!='\0')     {       if((str[i]>='a' && str[i]<='z')||(str[i]>='a' && str[i]<='z'))     {         out[j]=str[i];   //截取单词时,和输入的字符串复制不同步     j++;     }     i++;    //加空字符     }     out[j]='\0';     printf("%s",out);     return out; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯