c语言截取字符串中的一部分

使用标准c语言,输入一串字符串,(例如$GCCGAA,-2345.5,+245,2455,2356,s),只截取其中的一两个数据,存到另一个数组当中。

例子如下:

直接编译,程序输出结果中任意输入字符串和数字,程序执行结果如下图所示:

扩展资料:

字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。

通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-24
如果提取指定长度的字符串有专门的函数: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");
}
}
第2个回答  推荐于2017-12-16
可改变数组大小,满足你可能的输入状况。

#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;
}本回答被提问者采纳
第3个回答  2008-06-02
可以用strncpy()函数

#include <string.h>

char sub[20];

strncpy(sub,string+12,13)
/*将string中从string[12]开始的13个数字复制到sub中*/
第4个回答  2014-03-22
假定你已把字符串存于变量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;
}
相似回答