自学内容网 自学内容网

linux-字符串函数使用

字符串的输入,输出,长度,大小,拼接,拷贝,填充,查找,比较

输入

相关的函数有: gets()、getchar()、fgetc()、fgets() 、scanf()。

s输入字符串, char/c输入字符, f可以是标准输入也可以是文件中获取

//gets 获取字符串给str 标准输入
    gets(str);
    puts(str); //将str输出出来
//fgets 获取输入的字符串 标准输入 和 文件输入
    fp = fopen("./test1.txt","a+"); //打开或创建test.txt文件,在末尾进行写入
    fgets(str2,8,fp); //sizeof(str2) 个数
    printf("%s\n",str2);
    fclose(fp);
//fgetc 获取输入的字符 标准输入 和 文件输入
    fp = fopen("./test1.txt","a+");
    ch = fgetc(fp); //sizeof(str2) 个数
    printf("%c\n",ch);
    fclose(fp);
//fseek() 移动光标
    fp = fopen("./test1.txt","a+");
    fseek(fp,3,SEEK_SET);
    ch=fgetc(fp);
    printf("%c\n",ch);
    fclose(fp);

输出

相关的函数有:putchar(),puts(),fputc(),fputs(),printf();

putchar('a'); //输出单个字符 到标准输出设备 
puts("hello world!");  //输出字符串 到标准输出设备 自动换行
 //与putchar类似,输出单个字符,到标准输出设备
 //不同的是还可以输出到指定文件
 fputc('a',fp); //指定文件
 fputc('a',stdout);//到终端 标准输出设备
 例子
 FILE *fp = NULL;
 if((fp = fopen("./test1.txt","w")) == NULL )
{
  perror("fopen err");
  exit(-1);
}
 fputc('a',fp);  //向文件输出
 puts("fputc写入成功");
 fputc('a',stdout); //向终端输出
 fputc('\n',stdout);
 fclose(fp);
//与puts()类似,输出字符串,到标准输出设备
//不同的是还可以输出到指定文件
fputs("bcdefj",fp);  //向文件输出
fputs('bcdefj',stdout); //到终端 标准输出设备
例子
FILE *fp = NULL;
if((fp = fopen("./test1.txt","a+")) == NULL )
{
  perror("fopen err");
  exit(-1);
}
  fputs("bcdefjhigklmn",fp);  //向文件输出
  puts("fputs写入成功");
  fputs("bcd",stdout);
  fclose(fp);

长度

求字符串长度–strlen() 库函数 长度

    char str[]="zxcvbnmasdfghjklqwertyuiop";
    printf("string:\"%s\"\n",str);
    printf("Length:\" %ld\"\n",strlen(str));
    puts("----------");
   /*  输出
    string:"zxcvbnmasdfghjklqwertyuiop"
Length:" 26"
----------
   */

大小

求数据类型或变量占用内存的大小–sizeof() c语音中的关键字 内存

    char str2[50]="hellow";
    char *ptr = str2;
    printf("sizeof: %ld\n", sizeof(str2));
    printf("strlen: %ld\n", strlen(str2));
    puts("~~~~~");
    printf("sizeof: %ld\n", sizeof(ptr));
    printf("strlen: %ld\n", strlen(ptr));

    printf("int-sizeof: %ld\n", sizeof(int)); //4
    printf("char-sizeof: %ld\n", sizeof(char)); //1
    puts("----------");

/*  输出
sizeof: 50
strlen: 6
~~~~~
sizeof: 8
strlen: 6
int-sizeof: 4
char-sizeof: 1
----------
*/

拼接

字符串拼接–strcat() strncat()
strcat(str1,str2)—将str2全部放到str1后面。
strncat(str1,str2,num)—将str2前num个放到str1后面。

    char str3[50]="hellow ";
    char str3_1[]="world !";
    puts("strcat函数:全部追加");
    strcat(str3,str3_1); //在最后进行添加
    printf("拼接后字符串为:\"%s\"\n",str3);
    puts("~~~~~");
    memset(str3,0x0,7); //str3字符串清零
    puts("strncat函数:追加的数量");
    strncat(str3,str3_1,5); //指定添加的个数
    printf("拼接后字符串为:\"%s\"\n",str3);
    puts("----------");
/*  输出
    strcat函数:全部追加
拼接后字符串为:"hellow world !"
~~~~~
strncat函数:追加的数量
拼接后字符串为:"world"
*/

拷贝

字符串拷贝 strcpy() strncpy()
strcpy(str1,str2)—将字符串str2全部拷贝到str1。
strncpy(str1,str2,num)—将字符串str2前num个数据拷贝到str1。
都是从头开始拷贝的,没涉及到的位置保持不变。

    char str4[50];
    char str4_1[]="hellow world";
    puts("strcpy函数 全部复制");
    strcpy(str4,str4_1);
    printf("复制后str4: \"%s\"\n",str4);
    puts("~~~~~");
    memset(str4,'g',20); //将str4字符串前20位置为'g';
    puts("strcpy函数 复制的数量");
    strncpy(str4,str4_1,6);
    printf("复制后str4: \"%s\"\n",str4);
    puts("----------");
/*  输出
strcpy函数 全部复制
复制后str4: "hellow world"
~~~~~
strcpy函数 复制的数量
复制后str4: "hellowgggggggggggggggg"
----------
*/

填充

字符串填充 memset() bzero()
memset(str,dat,len)—把str里的数据从头开始填充数据dat(dat会被转换为 unsigned char 类型),共填充len个字节。
bzero(str,len)—将str字符串前len个字节给清零。

    char str5[50]="22222222222";
    printf("str5:   %s\n", str5);
    memset(str5,'3',strlen(str5));
    printf("memset: %s\n", str5);
    bzero(str5,strlen(str5));
    printf("bzero:  %s\n",str5);
    puts("----------");
/*  输出
str5:   22222222222
memset: 33333333333
bzero:  
----------
*/    

查找

字符串查找 strstr() strchr() strrchr()
char *strstr(const char *str1, const char *str2)—在字符串str1中查找第一次出现字符串str2的位置,并返回指向该位置的指针。如果没有找到,则返回NULL。
char *strchr(const char *s, int c) —在字符串s中查找第一次出现字符c的位置,并返回指向该位置的指针。
char *strrchr(const char *s, int c)-—在字符串s中查找最后一次出现字符c的位置,并返回指向该位置的指针

    char str6[]="hello world";
    char *p = strstr(str6,"world");
    if(p!= NULL)
        printf("strstr函数: %s\n",p);
    else
        printf("strstr函数: 没有找到\n");
    puts("----------");
/*输出
strstr函数: world
*/

比较

字符串比较 strcmp() strncmp() memcmp()
int strcmp(const char *s1, const char *s2)—比较s1和s2的大小,按照对应想ASCII值来,直到找到不同的字符串或其中一个字符串结束。s1小于s2,返回一个负值。大于时返回一个正值。等于返回0。

int strncmp(const char *s1, const char *s2, size_t n)—比较字符串s1和s2的前n个字符的大小。比较方式与strcmp相同。

int memcmp(const void *s1, const void *s2, size_t n)—比较从s1和s2开始的n个字节的内存区域。比较是按照字节进行的,返回值与strcmp类似。

    char str7[]="hello";
    char str7_1[]="world";
    printf("strcmp函数: %d\n",strcmp(str7,str7_1));
    printf("strncmp函数: %d\n",strncmp(str7,str7_1,5));
    printf("memcmp函数: %d\n",memcmp(str7,str7_1,5));
    puts("----------");
/*输出
    strcmp函数: -120
strncmp函数: -120
memcmp函数: -1
----------
*/

原文地址:https://blog.csdn.net/qq_64171874/article/details/142546328

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!