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)!