c拆分字符串,并按照指定格式存入结构体数组
生活随笔
收集整理的這篇文章主要介紹了
c拆分字符串,并按照指定格式存入结构体数组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
c將字符串拆分,并按照指定格式存入結構體數組
- 函數功能
- 代碼實現
- 結果顯示
函數功能
字符串格式:username1,password1;username2,password2;
結構體格式:
最終將`username1、password1、username2、password2存入到結構體數組NODE_S[2]中
代碼實現
#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; //用于統計結構體數組的個數,等于分號的個數int iLen = 0;NODE_S *pstPos = NULL; /* 求字符串的長*/iLen = strlen(p);/* 遍歷字符串查看有幾個分號,需要申請多少內存*/for(i = 0; i < iLen; i++){if(p[i] == ';'){iNodeNum++;}}/* 申請內存*/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; }結果顯示
[root@localhost svn]# ./test2 pstPos[0]=username1 pstPos[0]=password1 pstPos[1]=username2 pstPos[1]=password2總結
以上是生活随笔為你收集整理的c拆分字符串,并按照指定格式存入结构体数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c将字符串拆分,并存入结构体
- 下一篇: c从sqlite3数据库中获取数据,并对