欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

c拆分字符串,并按照指定格式存入结构体数组

发布时间:2025/10/17 73 豆豆
生活随笔 收集整理的这篇文章主要介绍了 c拆分字符串,并按照指定格式存入结构体数组 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

c将字符串拆分,并按照指定格式存入结构体数组

  • 函数功能
  • 代码实现
  • 结果显示

函数功能

字符串格式:username1,password1;username2,password2;
结构体格式:

typedef struct{char acUserName[120];char acPassword[120]; }NODE_S;

最终将`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拆分字符串,并按照指定格式存入结构体数组的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。