当前位置:首页 » 编程语言 » c语言操作字符串

c语言操作字符串

发布时间: 2022-08-15 00:58:49

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

string.h头文件中包含的字符串函数

void*memcpy(void*dest,constvoid*src,size_tn);//将n字节长的内容从一个内存地址复制到另一个地址;如果两个地址存在重叠,则最终行为未定义
void*memmove(void*dest,constvoid*src,size_tn);//将n字节长的内容从一个内存地址复制到另一个地址;与memcpy不同的是它可以正确作用于两个存在重叠的地址
void*memchr(constvoid*s,charc,size_tn);//在从s开始的n个字节内查找c第一次出现的地址并返回,若未找到则返回NULL
intmemcmp(constvoid*s1,constvoid*s2,size_tn);//对从两个内存地址开始的n个字符进行比较
void*memset(void*,int,size_t);//用某种字节内容覆写一段内存空间
char*strcat(char*dest,constchar*src);//在字符串dest之后连接上src
char*strncat(char*dest,constchar*src,size_tn);//从src截取n个字符连接在字符串dest之后,返回dest字符串
char*strchr(constchar*str,intch);//从字符串str头开始查找字符ch首次出现的位置
char*strrchr(constchar*str,intch);//从字符串str尾开始查找字符ch首次出现的位置
intstrcmp(constchar*,constchar*);//基于字典顺序比较两个字符串
intstrncmp(constchar*,constchar*,size_t);//基于字典顺序比较两个字符串,最多比较n个字节
intstrcoll(constchar*,constchar*);//基于当前区域设置的字符顺序比较两个字符串
char*strcpy(char*str1,constchar*str2);//将str2拷贝给str1
char*strncpy(char*str1,constchar*str2,size_tn);//截取str2的n个字符拷贝给str1
char*strerror(int);//返回错误码对应的解释字符串,参见errno.h(非线程安全函数)
size_tstrlen(constchar*);//返回一个字符串的长度
size_tstrspn(constchar*s,constchar*strCharSet);//从字符串s的起始处开始,寻找第一个不出现在strCharSet中的字符,返回其位置索引值。换句话说,返回从字符串s的起始位置的完全由strCharSet中的字符构成的子串的最大长度。strspn为stringspan的缩写。不支持多字节字符集。
size_tstrcspn(constchar*s,constchar*strCharSet);//从字符串s的起始处开始,寻找第一个出现在strCharSet中的字符,返回其位置索引值。换句话说,返回从字符串s的起始位置的完全由不属于strCharSet中的字符构成的子串的最大长度。strcspn为stringcomplementspan的缩写。不支持多字节字符集。
char*strpbrk(constchar*s,constchar*strCharSet);//在字符串s中查找strCharSet中任意字符第一次出现的位置的指针值。strpbrk为stringpointerbreak缩写。不支持多字节字符集。
char*strstr(constchar*haystack,constchar*needle);//在字符串haystack中查找字符串needle第一次出现的位置,heystack的长度必须长于needle
char*strtok(char*strToken,constchar*strDelimit);//将一个字符串strToken依据分界符(delimiter)分隔成一系列字符串。此函数非线程安全,且不可重入;但MSVC实现时使用了thread-localstaticvariable因而是线程安全的单仍然是不可重入,即在单线程中不能对两个源字符串交替调用该函数来分析token,应当对一个字符串分析完成后再处理别的字符串。
size_tstrxfrm(char*dest,constchar*src,size_tn);//根据当前locale转换一个字符串为strcmp使用的内部格式

㈡ c语言中如何输入输出字符串

在<string.h>头文件中用字符串处理函数输入和输出,gest用来输入,puts用来输出。

字符串输入函数gets,从键盘键入以回车结束的字符串放入字符数组中,并自动加’'。输入串长度应小于字符数组维数,字符串中可以包含空格。

字符串输出函数puts,向显示器输出字符串(输出完,自动换行,即用' '替'')。字符数组必须以''结束。

示例代码如下:

#include<string.h>

int main()

{

char str[40];

printf("请输入字符串");

gets(str);

printf("请输出字符串");

puts(str);

system("pause");

return 0;

}

(2)c语言操作字符串扩展阅读

在C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作。

流式文件操作,这种方式的文件操作有一个重要的结构FILE,FILE在头文件stdio.h中定义如下:

typedef struct {

int level; /* fill/empty level of buffer */

unsigned flags; /* File status flags */

char fd; /* File descriptor */

unsigned char hold; /* Ungetc char if no buffer */

int bsize; /* Buffer size */

unsigned char _FAR *buffer; /* Data transfer buffer */

unsigned char _FAR *curp; /* Current active pointer */

unsigned istemp; /* Temporary file indicator */

short token; /* Used for validity checking */

} FILE; /* This is the FILE object */

直接I/O文件操作,这是C提供的另一种文件操作,它是通过直接存/取文件来完成对文件的处理,此类文件操作常用的函数及其所用的一些符号在io.h和 fcntl.h中定义,在使用时要加入相应的头文件。

㈢ 如何用c语言来表达一个字符串

1)在串值后面加一个不计入长度的结束标记字符,比如'\0'来表示串值的终结

初始化一个字符串的方法如下,在最后添加'\0'

char str[] = {'I','a','m','h','a','p','p','y','\0'};
也可以直接使用字符串常量初始化字符数组(系统自动加上'\0'),这种方法符合人们的习惯。

char str[] = "I am happy";
或者
char str[] = {"I am happy"};
注意:不能使用下面的赋值方式:
char str[20];
str = "I am happy";
但可以用字符指针指向这个字符串:
char *str;
str = "I love China";

(2)将实际串长度值保存在数组0的下标下

#define MAXSIZE 20 //数组的长度
typdef char String[MAXSIZE+1];
初始化字符串的方法:

String t;
StrAssign(t,"I am happy");
int StrAssign(String T,char *chars)
{
T[0] = strlen(chars); //下标为0存放数组长度
for(i=1;i<=strlen(chars);i++) //下标位置从1开始存放数据
{
T[i] = *(chars+i-1);
}
return 1;
}
(3)使用结构体类型(自定义类型)

#define MAXSIZE 20
typedef struct{
char ch[MAXSIZE];
int len;
}String;
其中:MAXSIZE表示串的最大长度,ch是存储字符串的一维数组,len是字符串的长度
初始化函数示例:

String t;
StrAssign(&t,"I am happy");
int StrAssign(String *t,char *chars)
{
int i;
if(strlen(chars)>MAXSIZE+1) //字符串的长度大于数组的长度,操作失败,返回0
return 0;
for(i=0;i<strlen(chars);i++)
{
t->ch[i] = *(chars+i);
}
t->len = strlen(chars); //数组的长度
return 1; //返回1,操作成功
}
说明:这里的StrAssign函数的参数t使用的是指针,是因为结构体变量做做形参,用法和普通变量一样属于值传递方式,在子函数中要给t赋值,所以输入的是t的指针。与之对比的是(2)子函数中T是数组,传入的是数组的首地址(改变形参也就改变了实参)。

————————————————
版权声明:本文为CSDN博主“chenkaibsw”的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenkaibsw/article/details/78957944

㈣ c语言如何表示字符串

c语言中没有字符串,只有字符数组用char
s[length]来表示。length表示你所要的字符串有多少个字符。这和c++中string是有区别的,c++中string是可以直接赋值如string
s;s="hello
world";但是c语言中的字符数组区不能这样。详细的c++字符串可在http://www.newsmth.net/pc/pccon.php?id=10002714&nid=359771查看。
c语言中字符串赋值方法strcpy(char*d,char*s)其中s代表是源字符串,d代表目标字符串,也就是你要赋值的字符串。希望对你有帮助。记得加点分

㈤ C语言中对字符串进行操作的标准库函数有哪些

1)字符串操作
strcpy(p, p1) 复制字符串
strncpy(p, p1, n) 复制指定长度字符串
strcat(p, p1) 附加字符串
strncat(p, p1, n) 附加指定长度字符串
strlen(p) 取字符串长度
strcmp(p, p1) 比较字符串
strcasecmp忽略大小写比较字符串
strncmp(p, p1, n) 比较指定长度字符串
strchr(p, c) 在字符串中查找指定字符
strrchr(p, c) 在字符串中反向查找
strstr(p, p1) 查找字符串
strpbrk(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找该集合的任一元素
strspn(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找不属于该集合的任一元素的偏移
strcspn(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找属于该集合的任一元素的偏移
* 具有指定长度的字符串处理函数在已处理的字符串之后填补零结尾符

2)字符串到数值类型的转换
strtod(p, ppend) 从字符串 p 中转换 double 类型数值,并将后续的字符串指针存储到 ppend 指向的 char* 类型存储。
strtol(p, ppend, base) 从字符串 p 中转换 long 类型整型数值,base 显式设置转换的整型进制,设置为 0 以根据特定格式判断所用进制,0x, 0X 前缀以解释为十六进制格式整型,0 前缀以解释为八进制格式整型
atoi(p) 字符串转换到 int 整型
atof(p) 字符串转换到 double 符点数
atol(p) 字符串转换到 long 整型

3)字符检查
isalpha() 检查是否为字母字符
isupper() 检查是否为大写字母字符
islower() 检查是否为小写字母字符
isdigit() 检查是否为数字
isxdigit() 检查是否为十六进制数字表示的有效字符
isspace() 检查是否为空格类型字符
iscntrl() 检查是否为控制字符
ispunct() 检查是否为标点符号
isalnum() 检查是否为字母和数字
isprint() 检查是否是可打印字符
isgraph() 检查是否是图形字符,等效于 isalnum() | ispunct()

㈥ 如何用c语言操作带有空格的字符串

C语言中,可以用gets函数来接收输入的字符串(包含空格)。
格式:gets(字符数组名);功能:gets函数用于将输入的字符串内容存放到指定的字符数组中,输入结尾的换行符'\n'被换成'\0'存储在该数组中。

㈦ c语言怎么用scanf输入字符串

c语言用scanf输入字符串:
char s[300];
scanf("%s",s);
这个语句只能输入不包含空格和跳格键的字符串并且以回车符结束输入。

㈧ c语言编程!字符串操作!


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* 字符串逆置 */
void string_inverse(char* src, char* dst)
{
int i, j;
for(j = 0, i = strlen(src)-1; i >=0; j++, i--)
{
dst[j] = src[i];
}
dst[j] = '';
}

/* 删除偶数下标的字符 */
void string_delete(char* s, char* t)
{
int i, j;
for(j = 0, i = 0; i < strlen(s); i++)
{
if(i%2 == 0){
t[j++] = s[i];
//s[i] = 0x00;
}
}
t[j] = '';

for(i = 0; i < strlen(s); i++)
{
if(i%2 == 0){
s[i] = 0x00;
}
}
}


int main(int argc, char *argv[])
{
char src[512];
char dst[512];
char t[512];
memset(src, 0, 512);
memset(dst, 0, 512);
memset(t, 0, 512);

printf("输入字符串:");
//scanf("%s", src);
gets(src);

printf("原始字符串:%s ", src);

/* 字符串逆置函数调用*/
string_inverse(src, dst);
printf("字符串逆置:%s ", dst);

/* 字符删除函数调用 */
string_delete(src, t);
printf("删除偶数下标的字符后,缓冲区t中的字符串:%s ", t);

return 0;
}

㈨ 在C语言中怎么输入一个字符串

在c语言中存储一个字符串,一般有两种方法,一种是字符指针,一种是使用字符数组。比如:
const char *str = "hello"; //使用字符串指针
const char str[] = "hello"; //使用字符数组
如果保存的字符串,需要修改。一般使用字符数组。比如:
char path[256] = "c:\\windows\\";
strcat(path, "system32");

㈩ c语言编程字符串处理

#include<stdio.h>char
str1[100],str2[100];char
*mystrcat(char
*s,char
*ct)
//字符串连接
{
while(*(s++));
s--;
while(*ct)
*(s++)
=
*(ct++);
return
s;
}char
*mystrcpy(char
*s,char
*ct)
{
while(*(s++)=*ct,*(ct++));
return
s;
}int
mystrcmp(char
*s,char
*ct)
{
while(*s
&&
*ct)
{
if(*(s++)
==
*(ct++))
continue;
else
return
*(s-1)-*(ct-1);
}
return
0;
}int
mystrlen(char
*s)
{
int
length
=
0;
while((length++,*s++));
return
length-1;
}char
*mystrsort(char
*s)
{
int
i,j,length
=
mystrlen(s);
char
t;
for(i
=
0;i
<
length;i++)
for(j
=
0;j
<
length-i-1;j++)
{
if(s[j]
>
s[j+1])
{
t
=s[j];
s[j]
=
s[j+1];
s[j+1]
=
t;
}
}
return
s;
}int
mystrfind(char
*s,char
ch)
{
int
index
=
0;
while(*s)
if(index++,*s
==
ch)
return
index;
return
-1;
}void
menu()
{
int
choose
=
1;
char
ch;
while(choose
!=
0)
{
printf("\n1.字符串连接\n2.拷贝\n3.比较\n4.求字符串长度\n5.对字符串内字符进行排序\n6.查找字符串中某个字符是否存在\n0.退出\n");
scanf("%d",&choose);
switch(choose)
{
case
1:printf("输入2字符串:\n");
scanf("%s%s",str1,str2);
mystrcat(str1,str2);
printf("连接后的字符串:%s\n",str1);
break;
case
2:printf("输入要拷贝的字符串:\n");
scanf("%s",str2);
mystrcpy(str1,str2);
printf("拷贝的字符串:%s\n",str1);
break;
case
3:printf("输入要比较的2字符串:\n");
scanf("%s%s",str1,str2);
printf("%d\n",mystrcmp(str1,str2));
break;
case
4:
printf("输入要求长度的字符串:\n");
scanf("%s",str1);
printf("长度为:%d\n",mystrlen(str1));
break;
case
5:
printf("输入要求排序的字符串:\n");
scanf("%s",str1);
mystrsort(str1);
printf("排序后:%s\n",str1);
break;
case
6:printf("输出字符串:\n");
scanf("%s",str1);
printf("输入要查找的字符:\n");
scanf("%c",&ch);
scanf("%c",&ch);
printf("ch所在位置为%d\n",mystrfind(str1,ch));
}
}
}int
main()
{

menu();
return
0;
}

热点内容
c缓存池 发布:2025-01-20 13:23:45 浏览:6
数控编程帅气宝塔图纸 发布:2025-01-20 13:22:15 浏览:871
共享文件夹加密软件 发布:2025-01-20 13:08:41 浏览:40
标识符是怎样存储的 发布:2025-01-20 13:08:39 浏览:894
怎么看安卓大屏什么牌子 发布:2025-01-20 13:08:35 浏览:258
ios开发java 发布:2025-01-20 13:02:42 浏览:881
速腾有侧灯的是哪个配置 发布:2025-01-20 13:01:53 浏览:371
社保用户名和密码都忘记了怎么办 发布:2025-01-20 12:55:55 浏览:321
最优存储形式是什么 发布:2025-01-20 12:51:32 浏览:27
centos编译php7 发布:2025-01-20 12:33:52 浏览:920