C语言如何将一个字符串按照规定长度分解为几个字符串
用substring().
比如String str="abcdefgh";
String s1 = str.substring(0,4);
String s2 = str.substring(4,8);
System.out.println(s1);
System.out.println(s2);
输出结果:abcd
efgh
#include #include #define MAX 32int find_longest(char *buff){ int total_len = 0, str_len = 0, longest_len = -1; char longest[128] = {0}; char *p = buff; while(1) { if (' ' == *p || '\0' == *p) { if (str_len > longest_len) { strncpy(longest, p-str_len, str_len); longest_len = str_len; } total_len += str_len; str_len = 0; if ('\0' == *p) { break; } } else { str_len++; } p++; } strcpy(buff, longest); return total_len;}int main(int argc, char *argv[]){ int i = 0, cnt = 0, total_len = 0; char buff[MAX][128] = {{0}}; for (i = 0; i < MAX; i++) { if (NULL == fgets(buff[i], 128, stdin)) { printf("错误
"); return -1; } else { buff[i][strlen(buff[i])-1] = '\0'; if (0 == strcmp("stop", buff[i])) { cnt = i; break; } } } for (i = 0; i < cnt; i++) { total_len = find_longest(buff[i]); printf("%d %s
", total_len, buff[i]); } return 0;}
按题意,字符串之间没有空格,那么用指针循环每次跳一个分组长度来取每个分组,同时判断是0开头还是1开头,决定数组正取还是反取。
#include<stdio.h>
#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
",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("每组地址为:
");
for(i=0;i<n;i++)
printf("%s
",adds[i]);
return 0;
}
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;
}
C语言如何将一个字符串按照规定长度分解为几个字符串
按题意,字符串之间没有空格,那么用指针循环每次跳一个分组长度来取每个分组,同时判断是0开头还是1开头,决定数组正取还是反取。include<stdio.h>#include<string.h>#include<malloc.h>#define size 9\/\/每组字符串长度int main(){ char str[100]="041FF820010028FF24083FF8200",**adds=NULL,...
C语言中将字符串打印成指定长度的方法
介于 % 和 s 之间的 m 有 measure(测量)的含义,它可以测量输入字符串的长度,scanf() 根据字符串的长度分配内存,并将字符串拷贝到这段内存,之后将首地址返回给 m。在使用完毕后,需要调用 free() 函数释放这段内存。程序源代码如下:include<stdio.h> int length(char *p);void main(){ i...
C语言怎么输出固定长度的字符串?
include <stdio.h>int main(){\/\/char a[]={'a','b','c','d'}; \/\/不要定义成字符数组 \/\/char b[]={'a','b','c'};\/\/char c[]={'a','b'};char a[]="abcd"; \/\/定义成字符串形式 char b[]="abc";char c[]="ab";printf( "%6s\\n" ,a ); \/\/%6s,每...
C语言怎么实现可变长度字符串
char * p = (char*)malloc(sizeof(char)*n)别忘了free C++和C#的string类型在最低层实际也是利用类似方法去做的 另外有一种 char str[SIZE_MAX]也有人喜欢用 realloc函数 只是不太推荐,主要原因是以前系统上这个函数操作会出问题,因为内存的原因 ...
C语言编程:输入一个指定长度的字符串
假设字符串的长度为5,则:include<stdio.h> define N 5 void main(){ int i;char a[N];for(i=0;i<N;i++)scanf("%c",&a[i]);for(i=0;i<N;i++)printf("%c",a[i]);}
c语言中怎么实现任意长度字符串输入
=EOF){ \/\/判断是否到文件结束,一个个读取字符 if(k<=n){ \/\/当前字符串长度大于等于字符串空间长度时 k*=2; \/\/长度增长2倍 s2 = (char *)realloc(s1,k); \/\/重新分配内存 if(s2 == NULL){ \/\/内存分配失败 free(s1); \/\/释放已...
vb语言中 把一个字符串拆分,然后放到一个定长的数组中!
你可以使用mid()函数,我用过,可以
C语言 输入一个长度不超过10个字符的字符串,将其排正
include<stdio.h> main(){ char *s,c;int i,j;printf("请输入一个字符串,串长不超过10\\n");scanf("%s",s);for(i=0;i<strlen(s)-1;i++)for(j=i+1;j<strlen(s);j++)if(s[i]>s[j]){ c=s[i];s[i]=s[j];s[j]=c;} printf("%s",s);getch();} ...
c语言:编写一个函数求给定字符串长度?
方法一:数组方式 代码如下:#include<stdio.h> include<assert.h> int my_strlen(char const*str){ int count=0;assert(str);\/\/断言,判断指针的有效性 while(*str++!=NULL){ count++;} return count;} int main(){ char arr[30]="trouble is a friend.";printf("%d\\n",my_strlen...
c语言中,怎么定义一个随意大小的字符串呢?
你要的随意大小字符串,刚出炉,还是热的。include <stdio.h>#include<malloc.h>#include<string.h>#define maxsize 10int main(){ char *str,*strSave,cSave; int i,n=2,strSize; strSize=maxsize; str=(char *)malloc(sizeof(char)*strSize); printf("输入任意长度字符...