c拆分字符串,并按照指定格式存入结构体数组
生活随笔
收集整理的這篇文章主要介紹了
c拆分字符串,并按照指定格式存入结构体数组
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
c將字符串拆分,并按照指定格式存入結(jié)構(gòu)體數(shù)組
- 函數(shù)功能
- 代碼實(shí)現(xiàn)
- 結(jié)果顯示
函數(shù)功能
字符串格式:username1,password1;username2,password2;
結(jié)構(gòu)體格式:
最終將`username1、password1、username2、password2存入到結(jié)構(gòu)體數(shù)組NODE_S[2]中
代碼實(shí)現(xiàn)
#include <stdio.h> #include <stdlib.h> #include <string.h>typedef struct{char acUserName[120];char acPassword[120]; }NODE_S;int String_parseDataFromClient(char *p,int iLen, NODE_S *pstPos) {int i = 0;char *p1 = NULL;char *p2 = NULL;p1 = p;int iPos = 0;for(i = 0; i < iLen; i++){if(p[i] == ','){memcpy(pstPos[iPos].acUserName, p1, &p[i] - p1); p1 = &p[i + 1];}if(p[i] == ';'){memcpy(pstPos[iPos].acPassword, p1, &p[i] - p1);p1 = &p[i +1];iPos++;}}return 0; }int main() {int i = 0;char *p = "username1,password1;username2,password2;";int iNodeNum =0; //用于統(tǒng)計(jì)結(jié)構(gòu)體數(shù)組的個(gè)數(shù),等于分號(hào)的個(gè)數(shù)int iLen = 0;NODE_S *pstPos = NULL; /* 求字符串的長(zhǎng)*/iLen = strlen(p);/* 遍歷字符串查看有幾個(gè)分號(hào),需要申請(qǐng)多少內(nèi)存*/for(i = 0; i < iLen; i++){if(p[i] == ';'){iNodeNum++;}}/* 申請(qǐng)內(nèi)存*/pstPos = calloc(iNodeNum, sizeof(*pstPos));if(NULL == pstPos){printf("calloc error!\n");return 0;}String_parseDataFromClient(p, iLen, pstPos);for(i = 0; i < iNodeNum; i++){printf("pstPos[%d]=%s pstPos[%d]=%s\n", i, pstPos[i].acUserName, i, pstPos[i].acPassword);}free(pstPos); return 0; }結(jié)果顯示
[root@localhost svn]# ./test2 pstPos[0]=username1 pstPos[0]=password1 pstPos[1]=username2 pstPos[1]=password2總結(jié)
以上是生活随笔為你收集整理的c拆分字符串,并按照指定格式存入结构体数组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c将字符串拆分,并存入结构体
- 下一篇: c从sqlite3数据库中获取数据,并对