fgets(),fputs(),字符串函数

#include<stdio.h>
#define MAX 81
int main()
{
    char name[MAX];
    char * ptr;
    printf("hi,what is your name?\n");
    ptr=fgets(name,MAX,stdin);
    printf("%s?Ah !%s! \n",name,ptr);
    return 0;
}

/*由于fgets把换行符存储到字符串里,这样每次显示字符串时
 * 就会显示换行符
 * 运行结果:
 * hi,what is your name?
tony
tony
?Ah !tony

! */

scanf()可以支持出入字符串,也可以限制输入的长度如scanf("%5s %10s",name1,name2)

puts()函数只需要给出字符串参数的地址,它显示字符串时自动在其后添加一个换行符,要确定输出的是字符串

fputs和fgets()对应,不过需要第二个参数来说明要写的文件,可以用stout来作为参数来进行输出显示,fgets()存储输入中的换行符,而fputs()也不为输出添加换行符



strlen()函数是求字符串的长度的,strcat()函数是连接两个字符串的,将后一和字符串连接到前一个字符串上,返回值为第一个参数的值

功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串,返回指向dest的指针。

strncat原型:extern char *strncat(char *dest,char *src,int n)多的一个功能就是可以复制指定个数的字符



strcpy()函数实现代码:

extern char *strcpy(char *dest,const char *src);

把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间,其实也就是相当于赋值,类似于a=b,它是字符串的赋值;

但是如果实参只是一个字符串指针而且未初始化,就会出现错误,因为分配的大小不一样,也就会导致错误

#include <stdio.h>
#include <stdlib.h>
char* strcpy(char *s1,const char *s2)//不变的东西一定要加上const
{
    int i=0;//char *p=s1,这样就可以了
    while(s2[i]!='\0')//*s2!='\0'
    {
        s1[i]=s2[i];//*s1++=*s2++;不能这样做,指针是一直在往后走,因此不能够实现复制成功,而
        i++;
    }
    s1[i]='\0';
    //*s1='\0'
    //s1=p;//这个就保证指针同步了,因为指针走到前面,需要回头才能指向原来的地址
    return s1;
}
 
 
int main(void)
{
    char a[]="hello!";
    char b[10];
    puts(strcpy(b,a));
    printf("%s",strcpy(b,a));
    //puts(b);
    return 0;
}

strcmp()函数,把两个字符串进行比较,而不是数组,返回值为int 类型

函数原型:int strncmp(char *str1, char *str2, int maxlen);

此函数功能即比较字符串str1和str2的前maxlen个字符。如果前maxlen字节完全相等,返回值就=0;在前maxlen字节比较过程中,如果出现str1[n]与str2[n]不等,则返回(str1[n]-str2[n])。


char *strchr(const char *s ,int c);该函数返回一个指向字符串s中存放c的第一个指针的位置

如果不存在就返回null

char *strrchr(const char *s,char c),该函数返回一个指针就是字符c最后一次出现的地方,如果每日有,就返回空指针


char *strpbrk(const char *s1,const char *s2),该函数返回s1中存放s2字符串的任何字符的第一个位置,如果没有,

则返回空指针


你可能感兴趣的:(fgets(),fputs(),字符串函数)