c语言截取字符串中的一部分
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言截取字符串中的一部分相关的知识,希望对你有一定的参考价值。
使用标准c语言,输入一串字符串,(例如$GCCGAA,-2345.5,+245,2455,2356,s),只截取其中的一两个数据,存到另一个数组当中。
例子如下:
直接编译,程序输出结果中任意输入字符串和数字,程序执行结果如下图所示:
扩展资料:
字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
参考技术A 如果提取指定长度的字符串有专门的函数:strncpy(*s1,*s2,n);如果提取字符串中从n开始的m个字符,程序如下:
#include<stdio.h>
#include<string.h>
void main()
unsigned int i,j,m,n;
char s1[80],s2[80];
printf("请输入一个字符串以回车键结束:\n");
gets(s1);
printf("请输入子串的起始位置和长度:");
scanf("%d%d",&n,&m);
if(n>0&&n<=strlen(s1))
if (m>0&&n+m<=strlen(s1)+1)
for(i=n-1,j=0;s1[i]&&i<n+m-1;i++,j++)
s2[j]=s1[i];
s2[j]='\0';
puts(s2);
else
printf("长度超出范围!\n");
else
printf("起始位置超出范围!\n");
参考技术B 可改变数组大小,满足你可能的输入状况。
#include<stdio.h>
int main()
char str[200]; // 假定输入1行字符串,长度在200以内
char s[20][16]; // 假定 用逗号分隔 的部分 约20个,每个长度 不超过16字符
double d[20]; // 假定数据个数 不超过 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]=='\n') s[n][j-1]='\0'; j=0; n++; // 取出 逗号分隔 开的字符串
for (i=0;i<n;i++) printf("%s\n",s[i]); //输出这些 分开的字符串
j=0;
for (i=0;i<n;i++)
if ( sscanf(s[i],"%lf",&d[j]) == 1) j++; // 能转换为数的一个一个转换
printf("\n=======values========\n");
for (i=0;i<j;i++) printf("%lf\n",d[i]); // 输出这些数据
return 0;
本回答被提问者采纳 参考技术C 可以用strncpy()函数
#include <string.h>
char sub[20];
strncpy(sub,string+12,13)
/*将string中从string[12]开始的13个数字复制到sub中*/ 参考技术D 假定你已把字符串存于变量char str[]; 现要把第1和第2个双引号之间的字符串取出来,放入 char s[] 里。
用 sscanf().
程序如下:
#include <stdio.h>
main()
char str[]="+cpbr:1,\"12345678900\",129,\"\"\nok";
char s[40];
sscanf(str,"%*[^,],\"%[^\"]",s);
printf("%s\n",s);
return 0;
以上是关于c语言截取字符串中的一部分的主要内容,如果未能解决你的问题,请参考以下文章