当前位置:首页 » 编程语言 » c语言区分单双字节来截取字符
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言区分单双字节来截取字符

发布时间: 2022-05-08 11:15:22

c语言 在知道两段字符串的情况下截取中间的字符串

先用strcat拼接好两个子串,然后再用left方式截取。
C语言中拼接字符串可以使用strcat函数。
1、strcat()函数 ,即string catenate的缩写
原型:extern char *strcat(char *dest,char *src);
用法:#include <string.h>
功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
2、举例:

#include <stdio.h>
#include <string.h>
int main(){
char d[20]="字符串1"; //第一个字符串
char *s=" 字符串2"; //第二个字符串
strcat(d,s); //拼接两个字符串,结果保存在第一个字符串当中
printf("%s",d); //输出拼接结果:"字符串1字符串2"
getchar();
return 0;
}
3、c语言截取字符串方法:

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

/*从字符串的左边截取n个字符*/
char * left(char *dst,char *src, int n)
{
char *p = src;
char *q = dst;
int len = strlen(src);
if(n>len) n = len;
/*p += (len-n);*/ /*从右边第n个字符开始*/
while(n--) *(q++) = *(p++);
*(q++)='\0'; /*有必要吗?很有必要*/
return dst;
}

❷ C语言。截取字符串

#include<stdio.h>
#include<string.h>
#include<ctype.h>
voidprint(chars[],intn,intm)
{
intk;
inti;
char*p;
k=strlen(s);
p=s;
for(i=n-1;i<n-1+m;i++)//从第n-1位置开始,截取m个字符
putchar(*(p+i));
printf(" ");

}
voidmain()
{
char*s,str[20];
intm,n;
printf("pleaseinputastring: ");
s=str;
gets(s);
printf("thestringis:");
puts(s);
printf("pleaseinputnandm ");
scanf("%d%d",&n,&m);
print(s,n,m);
}

❸ C语言截取指定字符串

可改变数组大小,满足你可能的输入状况。

#include<stdio.h>

int main(){char str[200]; // 假定输入1行字符串,长度在200以内char s[20][16]; // 假定 用逗号分隔的部分约20个。

每个长度 不超过16字符double d; // 假定数据个数 不超过 20 个int i,j=0,L,n=0;fgets(str,200,stdin)。

// 读入一行 字符串,含换行符L = strlen(str)。

//计算输入的字符串长度for (i=0;i<L;i++){s[n][j]=str[i]; j++;if (str[i]==',' || str[i]==' ') {s[n][j-1]=''; j=0; n++;} // 取出逗号分隔开的字符串}

(3)c语言区分单双字节来截取字符扩展阅读:

C语言继续发展,在1982年,很多有识之士和美国国家标准协会为了使这个语言健康地发展下去,决定成立C标准委员会,建立C语言的标准。委员会由硬件厂商、编译器及其他软件工具生产商、软件设计师、顾问、学术界人士、C语言作者和应用程序员组成。

1989年,ANSI发布了第一个完整的C语言标准——ANSI X3.159—1989,简称“C89”,不过人们也习惯称其为“ANSI C”。

C89在1990年被国际标准组织ISO(International Standard Organization)一字不改地采纳,ISO官方给予的名称为:ISO/IEC 9899,所以ISO/IEC9899: 1990也通常被简称为“C90”。

1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,命名为ISO/IEC 9899:1999,简称“C99”。在2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899: 2011,简称为“C11”。

❹ c语言如何截取字符串的一部分

用strncpy函数,函数签名
char * strncpy(char *dest, const char *src, size_t n);
比如要是从src第2个字符开始截取3个字符,可以用
strncpy(dest, src + 2 - 1, 3);

❺ 试尝试用C语言写一个获取字符串长度的子函数,要求能自动识别字符串中的字符是单字节字符还是双字节字符。

#include<stdio.h>
void strlength(unsigned char *str)
{
int len=0,d=0,s=0;
while(*str)
{
if((*str)&0x80) s++;
else d++;
len++;
str++;
}
printf("字符串长度:%d, 其中单字节:%d, 双字节:%d\n",len,d,s);
}
void main()
{
unsigned char str[30]="我爱你,中国!";
strlength(str);
}

❻ C语言截取字符串

这个你只能写个循环自己判断了,示例代码如下

charstr[]="<1,2>,<3,4>,<4,5>";
intnum[10];
intindex=0;
inti;
for(i=0;i<strlen(str);i++)
{
if(str[i]>='0'&&str[i]<='9')//如果是字符0-9
num[index++]=str[i]-'0';//字符转换为数字,放到int类型的数组
}

❼ c语言截取字符

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

// 用逗号分隔字符串,结果从parr中返回,函数返回值是parr中有效大小
// 调用时请保证parr足够大
// 函数中用到strtok,需要注意此函数是不能在多线程中使用的。
int SplitStr(char *buff, char *parr[])
{
char *pc = strtok(buff, ",");
int i;

for(i=0; pc != NULL; i++)
{
parr[i] = pc;
pc = strtok(NULL, ",");
}

return i;
}

int main ()
{
// buff是测试数据,实际应用中可以从文件中一行行读出
char buff[] = "$GPGGA,045950.00,A,3958.46258,N,11620.55662,E,0.115 ";
printf ("%s\n", buff);

// 定义一个指针数组,用以返回分隔结果
char *parr[100] = {NULL};

// 调用分隔函数,返回值字段数
int num = SplitStr(buff, parr);

// 测试分隔结果
for (int i=0; i<num; i++)
printf("%d:<%s>\n", i, parr[i]);

return 0;
}

❽ 用C语言截取字符串

如果允许使用库函数,那么实际这个非常简单:

#include<string.h>
#include<stdio.h>
voidparse_str(char*str)
{
char*s=NULL,*p;
if(str[0]!='s'||str[1]!='!')
return;
s=strp(str+2);
p=strtok(s,":");
while(p)
{
printf("%s ",p);
p=strtok(NULL,":");
}
free(s);
}

❾ c语言中对字符串截取的函数!

  1. 根据单个分隔字符用split截取

string st="GT123_1";
string[] sArray=st.split("_");

即可得到sArray[0]="GT123",sArray[1]="1";

2.利用多个字符来分隔字符串

tring str = "GTAZB_JiangjBen_123";
string[] sArray = str.Split(new char[2] { 'j', '_' });
foreach(string e in sArray)
{
Console.WriteLine(e);
}

得到sArray[0]="GTAZB",sArray[1]="Jiang",sArray[2]="Ben",sArray[3]="123";

3根据字符串或字符串组来截取字符串

string str = "GTAZB_JiangjBen_123";
string[] sArray = str.Split( new string[]{"Ji","jB"}, StringSplitOptions.RemoveEmptyEntries);
foreach(string e in sArray)
{
Console.WriteLine(e);
}

得到sArray[0]="GTAZB_",sArray[1]="ang",sArray[2]="en_123";

4提取字符串中的第i个字符开始的长度为j的字符串;

string str = "GTAZB_JiangjBen_123";
int start=3,length=8;
Console.WriteLine(str.Substring(start-1, length));

❿ C语言函数字符串截取分割

C标准库中提供了一个字符串分割函数strtok();

实现代码如下:

#include<stdio.h>

#include<string.h>

#defineMAXSIZE1024

intmain(intargc,char*argv[])

{

chardates[MAXSIZE]="$GPGGA,045950.00,A,3958.46258,N,11620.55662,E,0.115,,070511,,,A*76";

char*delim=",";

char*p;

printf("%s",strtok(dates,delim));

while(p=strtok(NULL,delim))

{

printf("%s",p);

}

printf(" ");

return0;

}

运行结果截图如下: