c语言创建字符串函数 如何用c语言定义字符串

用C语言怎么写个 字符串插入函数程序的大体思路可以是这样:
str1是原字符串,str2是待插入的字符串,position是待插入的位置,我们可以这样,用一个指针p_cur指向字符串1 str1中的待插入位置position,另一个指针p_end指向字符串1 str1的尾部,每次插入字符前 , 把str1中从当前位置开始一直到结束字符全部后移一个位置,空出当前位置 , 然后把要插入的字符放进这个位置,这样就完成了一个字符的插入,重复这个步骤,直到str2被完全插入 。
代码如下:
#include stdio.h
#include string.h
void insert_str(char str1[],char str2[],int position)
{
/*
insert_str()函数
功能:将字符串str2插入到str1的position位置处
参数:char str1,char str2 ,int position
返回值:无
*/
int i;
char *p_end,*p_cur,*p;/*p_end指向第一个字符串的尾部,p_cur指向被插入的位置*/
p_end=str1 strlen(str1)-1;
p_cur=str1 position-1;
for(i=0;str2[i]!='\0';i)
{
for(p=p_end;p=p_cur;p--)
{
*(p 1)=*p;/*从p_cur到p_end的全部元素后移一个位置,此时p_cur指向的位置就空出来了*/
}
*p_cur=str2[i];/*把字符串2中的字符插入空出来的位置*/
p_cur;/*p_cur下移一个位置*/
p_end;/*多了一个字符,因此p_end也下移一个位置*/
}
}
void main()
{
char s1[100],s2[20];
int position;
printf("输入字符串1:\n");
gets(s1);
printf("输入插入位置:");
do
{
scanf("%d",position);
while(getchar()!='\n');/*这一句可以把输入position的时候输入的回车去掉*/
}while(position0||positionstrlen(s1));
printf("输入字符串2:\n");
gets(s2);
insert_str(s1,s2,position);
printf("字符串被插入后变成:\n");
puts(s1);
}
C语言中如何编写一个字符串复制函数 , 并在主函数中调用它 。#includestdio.h
char *custom_cpy(char *to,char *from);
int main(int argc,char *argv[]){
char *from = "i like c langanger";
char to[30];
char *ptr = custom_cpy(to,from);
printf("%s,%s\n",ptr,to);
return 0;
}
char *custom_cpy(char *to,char *from){
if(to == NULL || from == NULL){
return NULL;
}
char *p = to;
for(;*from!='\0';from,to){
*to = *from;
}
*to = '\0';//拷贝完毕之后一定要加一个结束符号
return p;
}
扩展资料:
字符串相关函数应用:
1. 连接运算 concat(s1,s2,s3…sn) 相当于s1 s2 s3 … sn 。
例:concat(‘11’,'aa’)='11aa’;
2. 求子串 。Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串 。
例:copy(‘abdag’,2,3)=’bda’;
3. 删除子串 。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串 。
例:s:=’abcde’;delete(s,2,3);结果s:=’ae’;
4. 插入子串 。过程Insert(s1,s2,I) 把s1插入到s2的第I个位置
例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’;
5. 求字符串长度 length(s) 例:length(‘12abc’)=5;
参考资料:
百度百科-字符串
C语言自编字符、字符串处理函数my_string.h
#ifndef _MY_STRING_H_
#define _MY_STRING_H_
//比较
int my_strcmp(const char *,const char *);
//复制
char *my_strcpy(char *,const char *);
//检查字符是否为数字或字母
int my_isAlpha(char );
int my_isNumber(char );
//大写转换为小写 。
char *my_convert(char *);
#endif
my_string.c
#include "my_string.h"
//比较
int my_strcmp(const char *cs,const char *ct)
{
register signed char __res;
while (1) {
if ((__res = *cs - *ct) != 0 || !*cs)
break;
}
return __res;
}
//复制
char *my_strcpy(char *dest,const char *src)
{
char *tmp=dest;
while((*dest=*src) != '\0');
return tmp;
}
//检查字符是否为数字或字母
int my_isAlpha(char c)
{
if((c='a'c='z') || (c='A'c='Z'))
return 1;//返回1为字母
else
return 0;//返回0为其c语言创建字符串函数他字符
}
int my_isNumber(char c)
{
if((c='0'c='9'))
return 1;
else
return 0;
}
//大写转换为小写 。
char *my_convert(char *src)
{
char *tmp=src;
while(*src!='\0')
{
if(*src ='https://www.04ip.com/post/A'*src='https://www.04ip.com/post/Z')
*src=https://www.04ip.com/post/*src 32;
}
return tmp;
}
别忘c语言创建字符串函数了自己测试一下
c语言定义字符串定义字符串的方法如下:
#include stdio.h
#include stdlib.h
int main()
{
//定义字符串的几种方式
//字符串和字符数组的区别:最后一位是否是空字符
char names1[] = {'j', 'a', 'c', 'k', '\0'};
char names2[50] = "jack";
char * names3 = "jack";
printf("数组所占空间大?。?d\n", sizeof(names1));
printf("数组所占空间大?。?d\n", sizeof(names2));
//动态输入
printf("请输入新名称: ");
scanf("%s", names2);
printf("%s\n", names2);
return 0;
}
扩展资料
字符串函数的应用
①连接运算 concat(s1,s2,s3…sn) 相当于s1 s2 s3 … sn.
例:concat(‘11’,'aa’)='11aa’;
②求子串 。
Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串 。
例:copy(‘abdag’,2,3)=’bda’
③删除子串 。
过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串 。
例:s:=’abcde’;delete(s,2,3);结果s:=’ae’
④插入子串 。
过程Insert(s1,s2,I) 把s1插入到s2的第I个位置 。
例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’
参考资料来源:百度百科-字符串
C语言关于字符串的操作函数有哪些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使用的内部格式
【c语言创建字符串函数 如何用c语言定义字符串】关于c语言创建字符串函数和如何用c语言定义字符串的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读