C语言如何将一个字符串按照规定长度分解为几个字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何将一个字符串按照规定长度分解为几个字符串相关的知识,希望对你有一定的参考价值。
大概题目为9个字符为一组,每组第一个字符作为标志位,后面8个为地址。如果标志位为0,则将地址逆序,如果为1,则不变。输入说明:给订一个字符串中包含多组字符,中间没有空格。输出说明:输出最后的地址,每组用空格隔开。求大神给出C语言代码
按题意,字符串之间没有空格,那么用指针循环每次跳一个分组长度来取每个分组,同时判断是0开头还是1开头,决定数组正取还是反取。
#include<string.h>
#include<malloc.h>
#define size 9//每组字符串长度
int main()
char str[100]="041FF820010028FF24083FF8200",**adds=NULL,*p=str,*p1=NULL;
int i,j,len=strlen(str),n,m;
n=len/size;
printf("字符串:%s\\n",str);
adds=(char **)malloc(sizeof(char *)*n);
if(!adds)
return 1;
for(i=0;i<n;i++)
adds[i]=(char *)malloc(sizeof(char)*size);
if(!adds[i])
return 1;
memset(adds[i],0,sizeof(char)*size);
if(*p=='0')//首字母0,反向取
p1=p+(size-1);
m=size-1;
j=0;
while(m--)
adds[i][j++]=*p1;
p1--;
if(*p=='1')//首字母1,正向取
p1=p+1;
m=size-1;
j=0;
while(m--)
adds[i][j++]=*p1;
p1++;
p+=size;
printf("每组地址为:\\n");
for(i=0;i<n;i++)
printf("%s\\n",adds[i]);
return 0;
参考技术A
C语言实现一个字符串的输入、解析、转置并输出(注:最后一组不足9个字符的情况不做解析),参考代码如下:
#include<stdio.h>#include<string.h>
#define N 9
void reverse(char *str,int n)
char t;
int i;
for(i=0; i<n/2; ++i)
t=str[i],str[i]=str[n-i-1],str[n-i-1]=t;
int main()
char str[300];
char buf[N+1];
char substr[N];
char ch,*p=str;
int i;
gets(str);
while(1)
for(i=0; i<N; ++i)
if(p[i]=='\\0') break;
buf[i]=p[i];
if(i!=N) break;
p+=N;
buf[N]='\\0';
sscanf(buf,"%c%s",&ch,substr);
if(ch=='0')
reverse(substr,N-1);
printf("%s ",substr);
return 0;
追问
感谢回答,但是还有一处没太看懂想请教您。请问p+=N表示的是什么意思呢?
追答p+=N等价于p=p+N
比如以上的运行结果:
012345678123456789...
初始时p指向字符串的第一个字符0;
第一组字符(012345678)处理完毕后,
p=p+9,p又指向字符1,然后开始处理第二组字符(123456789);
以此类推。。。
JS javascript如何按照一定长度切割字符串。
比如:
var str="春运热潮带动下,一些互联网企业也纷纷推出 “抢票软件”,据说能增加买到车票的概率,引来无数网友下载。对此,相关部门提醒市民谨慎使用,以防个人信息被盗。"
按照没长度为10进行切割。
详解:
substring 方法用于提取字符串中介于两个指定下标之间的字符。
语法:stringObject.substring(start,end)
start:必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
stop:可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。
返回值:一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。
注意:
substring 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。
如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。
如果 start 或 end 为负数,那么它将被替换为 0。
substr 方法用于返回一个从指定位置开始的指定长度的子字符串。
语法:stringObject.substr(start ,length)
start:必需。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。
length 可选。在返回的子字符串中应包括的字符个数。
注意:
如果start为负数,则start=str.length+start。
如果 length 为 0 或负数,将返回一个空字符串。
如果没有指定该参数,则子字符串将延续到stringObject的最后。 参考技术A var str = '春运热潮带动下,一些互联网企业也纷纷推出 “抢票软件”,据说能增加买到车票的概率,引来无数网友下载。对此,相关部门提醒市民谨慎使用,以防个人信息被盗。';
var flag = 10;
var arr = [];
var count =0;
for(var i=0,len=str.length/10;i<len;i++)
str1 = str.substr(0,10);
str = str.replace(str1,'');
alert(str1);
本回答被提问者采纳 参考技术B var str = "春运热潮带动下,一些互联网企业也纷纷推出“抢票软件”,据说能增加买到车票的概率,引来无数网友下载。对此,相关部门提醒市民谨慎使用,以防个人信息被盗。"
var strArr = [];
var n = 10;
for (var i = 0, l = str.length; i < l/n; i++)
var a = str.slice(n*i, n*(i+1));
strArr.push(a);
console.log(strArr); 参考技术C 长度为10,是指10个字符么?切割是什么意思呢?按照我的理解:
var str="春运热潮带动下,一些互联网企业也纷纷推出 “抢票软件”,据说能增加买到车票的概率,引来无数网友下载。对此,相关部门提醒市民谨慎使用,以防个人信息被盗。";
var f = 10, arr = [], i = 0, le = str.length/f;
while(i<le)
var strs = str.substr(0,f);
str = str.substring(10);
arr.push(strs);
i++;
arr.join('&&&&');//用‘&&&&’分割的
以上是关于C语言如何将一个字符串按照规定长度分解为几个字符串的主要内容,如果未能解决你的问题,请参考以下文章