C语言如何将一个字符串按照规定长度分解为几个字符串 c语言如何使一行字符串,按空格分开形成多个字符串,然后再记录...

\u5982\u4f55\u5c06\u4e00\u4e2a\u5b57\u7b26\u4e32\u5206\u5272\u6210\u51e0\u4e2a\u5b57\u7b26\u957f\u5ea6\u76f8\u540c\u7684\u5b57\u7b26\u4e32

\u7528substring().
\u6bd4\u5982String str="abcdefgh";
String s1 = str.substring(0,4);
String s2 = str.substring(4,8);
System.out.println(s1);
System.out.println(s2);
\u8f93\u51fa\u7ed3\u679c\uff1aabcd
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("\u9519\u8bef\n"); 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\n", 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璇█濡備綍灏嗕竴涓瓧绗︿覆鎸夌収瑙勫畾闀垮害鍒嗚В涓哄嚑涓瓧绗︿覆
    绛旓細鎸夐鎰忥紝瀛楃涓蹭箣闂存病鏈夌┖鏍硷紝閭d箞鐢ㄦ寚閽堝惊鐜瘡娆¤烦涓涓垎缁勯暱搴︽潵鍙栨瘡涓垎缁勶紝鍚屾椂鍒ゆ柇鏄0寮澶磋繕鏄1寮澶达紝鍐冲畾鏁扮粍姝e彇杩樻槸鍙嶅彇銆俰nclude<stdio.h>#include<string.h>#include<malloc.h>#define size 9//姣忕粍瀛楃涓查暱搴nt main(){ char str[100]="041FF820010028FF24083FF8200",**adds=NULL,...
  • 濡備綍鍦C璇█涓瀹炵幇杈撳叆涓涓瓧绗︿覆,鐒跺悗鎸夌収鎸囧畾椤哄簭杈撳嚭瀛楃瀛椾覆銆
    绛旓細int main(){ int n;string a[4]; //string 涓哄瓧绗︿覆绫诲瀷 printf("璇疯緭鍏ユ偍瑕佽緭鍑虹殑绗琻涓瓧绗︿覆");scanf("%d",&n);printf("%s\t",a[n-1]);return 0;}
  • 灏嗕竴涓瓧绗︿覆鎻掑叆鍒板彟涓涓瓧绗︿覆鐨勬寚瀹氫綅缃殑棰樼洰(鐢C璇█瑙e喅)
    绛旓細1銆佸弬鏁2鍘绘帀涓庡弬鏁1鐩稿悓鐨勫瓧绗︿覆銆2銆佷粠鎸囧畾浣嶇疆鎴彇瀛楃涓茬殑鎸囧畾闀垮害銆3銆佷粠瀛楃涓蹭腑鎵惧埌鎸囧畾瀛楃涓茬殑浣嶇疆鍚庝竴浣嶅紑濮嬪埌缁撴潫鐨勫瓧绗︿覆銆4銆佷粠鎸囧畾鐨勪綅缃紑濮嬫埅鍙栧瓧绗︿覆鍒板瓧绗︿覆缁撳熬澶勩5銆佷粠瀛楃涓叉壘鍒版寚瀹氬瓧绗︿覆寮濮嬫埅鍙栧瓧绗︿覆鐨勭粨灏俱6銆佷粠寮濮嬪埌鎸囧畾瀛楃涓茬殑鏂囦欢鐨勫瓧绗︿覆鎴彇銆7銆佹埅鍙栨寚瀹2涓瓧绗...
  • C璇█涓浣缂栧啓涓涓瓧绗︿覆澶嶅埗鍑芥暟,骞跺湪涓诲嚱鏁颁腑璋冪敤瀹冦
    绛旓細鍙互鍒╃敤瀛楃鎸囬拡缁撳悎while寰幆鐨勬柟寮忔潵缂栧啓瀛楃涓插鍒跺嚱鏁銆傚叿浣撳疄鐜版柟娉曞彲浠ュ弬鑰冨涓嬬▼搴忥細include<stdio.h>void str_copy(char *str1, char *str2) // 瀛楃涓插鍒跺嚱鏁皗 while(*str1++ = *str2++); // 灏嗗瓧绗︿覆str2涓殑姣忎釜瀛楃閫愪釜澶嶅埗鍒皊tr1涓紝鐩村埌閬囧埌瀛楃涓茬粨鏉熷瓧绗'\0'}void ma...
  • C璇█缂栫▼,鍐欎竴涓嚱鏁,浣胯緭鍏ョ殑涓涓瓧绗︿覆鎸鍙嶅簭瀛樻斁,鍦ㄤ富鍑芥暟涓緭鍏ュ拰...
    绛旓細printf("New string: %s\n", s);//杈撳嚭鍙嶅簭鍚庣殑瀛楃涓 return 0;} void input(char st[]){ printf("Please enter string: ");gets(st);} //鍙嶅簭鍑芥暟 void reverse(char st[]){ int n=strlen(st);for (int i=0, j=n-1, t; i<(n/2); t=st[i], st[i]=st[j], st[...
  • C璇█缂栫▼,鍐欎竴涓嚱鏁,浣胯緭鍏ョ殑涓涓瓧绗︿覆鎸鍙嶅簭瀛樻斁,鍦ㄤ富鍑芥暟涓緭鍏ュ拰...
    绛旓細void main(){ void Reverse(); //鍑芥暟澹版槑 printf("璇疯緭鍏瀛楃涓锛");scanf("%s",&a[i]);printf("鍙嶈浆鍚庣殑瀛楃涓诧細");Reverse(); //鍑芥暟璋冪敤 } void Reverse() //鍑芥暟瀹氫箟 { for(i=N;i>=0;i--)printf("%c ",a[i]);printf("\n");} Reverse鏄弽杞紱褰撶劧锛屽嚱鏁...
  • C璇█绋嬪簭璁捐 浠庨敭鐩樿緭鍏涓涓瓧绗︿覆,灏嗗叾涓墍鏈夌殑鏁板瓧瀛楃鎶藉嚭,鎸夊師...
    绛旓細include "stdio.h"int main(void){ char s[100],ns[100];int i,j;printf("Please intput a string...\ns=");gets(s);for(j=i=0;ns[j]=s[i];i++)if(s[i]<'0' ||s[i]>'9')j++;puts(ns);return 0;}
  • c璇█涓,鎬庝箞瀹氫箟涓涓闅忔剰澶у皬鐨瀛楃涓鍛?
    绛旓細浣犺鐨勯殢鎰忓ぇ灏瀛楃涓锛屽垰鍑虹倝锛岃繕鏄儹鐨勩俰nclude <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("杈撳叆浠绘剰闀垮害瀛楃...
  • c璇█ 濡備綍灏嗕竴涓瓧绗︿覆鐨勫墠n涓瓧姣嶅悗绉昏嚦灏,鍏朵粬鐨勬寜椤哄簭鍓嶇Щ?_鐧惧害...
    绛旓細include <string.h>//涓轰簡浣跨敤memcpy銆乻trlen绛瀛楃涓鍑芥暟 define N 5 int main(){ char a[] = "abcdefghijk";int i, j, m;char b[N+1] = {'\0'};//b灏嗘垚涓涓涓涓棿鍌ㄥ瓨鏁扮粍 memcpy(b, a, N);//鎶奱鐨勫墠N涓瓧绗澶嶅埗鍒癰涓紝瀛樿捣鏉ワ紝浠ヤ緵鍚庨潰浣跨敤 m = strlen(a)+1;//寰楀嚭a...
  • c璇█浠庨敭鐩樹笂杈撳叆涓涓瓧绗︿覆,鎸夊悗鎸夌収涓嬮潰瑕佹眰杈撳嚭涓涓柊瀛楃涓,
    绛旓細include<stdio.h> int main(){ char a[10000];int i,j;printf("input a passage:\n");gets(a);for(i=0;a[i]!='\0';i++);for(j=0;j<=i-1;j++)printf("%3c",a[j]);printf("%c",a[j]);getch();return 0;} 杩欎釜鎴戜笉鐭ラ亾鍚堜笉鍚堜綘鎰忎簡 ...
  • 扩展阅读:c语言字符对照表 ... 输入一个字符串c语言 ... c++输入输出 ... c语言输入10个字符串 ... c语言怎么任意输入字符串 ... c语言如何比较字符串 ... c语言两个字符串比较 ... 字符串输入用什么表示 ... 如何输入一个字符串c语言 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网