C语言如何将一个字符串按照规定长度分解为几个字符串

供稿:hz-xin.com     日期:2025-01-16
如何将一个字符串分割成几个字符长度相同的字符串

用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("输入任意长度字符...