C语言如何实现取字符串的一部分?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何实现取字符串的一部分?相关的知识,希望对你有一定的参考价值。

如 string="asdkjfla;ksd7963247589345"
如何把后面的数字取出来
用什么函数?代码?

例子如下:

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

扩展资料:

字符串或串(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 可以用strncpy()函数

#include <string.h>

char sub[20];

strncpy(sub,string+12,13)
/*将string中从string[12]开始的13个数字复制到sub中*/本回答被提问者采纳
参考技术C #include <stdio.h>

int main()

int i, j, length;
char a[] ="hello world";
int from, num;

scanf("%d",&from); //截取开始的字符下标
scanf("%d",&num); //共截取的字符数
char b[num];

for (length = 0; a[length]!= '\0'; length++)
if (from>=0)
if (from+num <= length )
i = from; j=0;
while ( j<num)
b[j] = a[i];
printf("%c",b[j]);
j++; i++;
return 0;

#include <stdio.h>
int main()
int i, j, length;
char a[] ="hello world";
int from, num;
scanf("%d",&from); //截取开始的字符下标
scanf("%d",&num); //共截取的字符数
char b[num];

for (length = 0; a[length]!= '\0'; length++)
if (from>=0)
if (from+num <= length )
i = from; j=0;
while ( j<num)
b[j] = a[i];
printf("%c",b[j]);
j++; i++;
return 0;
参考技术D C语言中想把一个数据分块,可以在读取数据的时候进行分块储存,不要整体读入之后,再进行分块。
如果数据是其他方式导入的,那只能通过先储存到硬盘,再读到内存,通过文件指针的移动,依次分块读入。
因为,数据存储是用整块内存存储的,不能直接将内存(即数据)进行分块,memcpy也只能获取数据前边一部分。

c语言如何取数组元素个数?

1、C语言中,定义数组后可以用sizeof命令获得数组的长度(即可容纳元素个数)。但是通过传递数组名参数到子函数中,以获得数组长度是不可行的,因为在子函数当中,数组名会退化为一个指针。
2、例如:

int data[4],length;
length=sizeof(data)/sizeof(data[0]);  //数组占内存总空间除以单个元素占内存空间大小,即等于元素个数
printf("length of data[4]=%d", length ); //输出length of data[4]=4

参考技术A 不能判断,因为C没有提供判断数组元素个数的功能。由于C不检查数组的边界,所以必须事先知道元素个数、所占字节数和元素类型三个要素中的两个才能确定另外一个,否则是无法判断的。比如有知道数组a[]占40个字节,又知道a[]是int型数组,那么元素个数就是40/sizeof(int)。其中sizeof(int)是用操作符sizeof来求得一个int类型所占字节数。 参考技术B 比如数组是int型,定义数组为int a[],则该数组的元素个数就是sizeof(a)/sizeof(int)本回答被提问者采纳 参考技术C length sizeof 都行,length获得的是数组的长度,数组长度比元素个数多1(比如a[10],他的长度是11),sizeof是数组字节数,字节数是数组长度乘以元素字节数。。。。。 参考技术D 貌似stdlib头文件里面的_countof()宏就可以可以做到……原理就是sizeof(a)/sizeof(a[0])

以上是关于C语言如何实现取字符串的一部分?的主要内容,如果未能解决你的问题,请参考以下文章

怎样用c语言实现取一个数字的个位

c语言如何取整数和小数

将字符串a中的数字取出存储到b中,用C语言指针怎么实现

C语言如何实现在运算过程中的四舍五入保留两位小数

ZZNUOJ_用C语言编写程序实现1165:实数取整(指针专题)(附完整源码)

C语言部分清屏如何实现