cmd 分割字符串

@echo off
REM 分割字符串

set str=100,200;300,400,500;n600,7,8,9
echo 对“%str%”进行分割,分割符 ",|;"
echo 取第1,2,4,5,*列

for /f "tokens=1,2,4,5,* delims=,|;" %%a in ("%str%") do (

	set c1=%%a
	set c3=%%b
	set c4=%%c
	set c5=%%d
	set c6=%%e
)

echo -
echo 输出:%c1%, %c3%, %c4%, %c5%, %c6%
echo -
pause

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
该代码有可能在 `fread()` 函数中出现段错误,原因是 `fread()` 函数在读取文件时,可能无法读取完整的 `resultlen` 个字节,导致读取越界,从而导致段错误。 解决该问题的方法是,在调用 `fread()` 函数前,先获取实际读取到的字节数,然后将其与 `resultlen` 取较小值,作为 `fread()` 函数的第三个参数。具体实现代码如下: ```c int system__popen(const char *cmd, char *cmdresult, int resultlen) { FILE *fp=NULL; if(cmd == NULL) { printf("system input error!!!\n"); return -1; } fp=popen(cmd,"r"); if(NULL == fp) { printf("system popen error cmd :%s!!!\n", cmd); return -1; } if(NULL != cmdresult) { int bytes_read = fread(cmdresult, 1, resultlen - 1, fp); // 读取实际的字节数 cmdresult[bytes_read] = '\0'; // 将读取到的内容以字符串形式保存 } pclose(fp); return 0; } int main() { char str[1024]; system__popen("awk '{print $2}' /proc/mtd | tail -n +2", str, sizeof(str)); printf("%s\n",str); char *str_array[20]; // 假设字符串数组最多存储10个子字符串 int i = 0; char *p = strtok(str, "\n"); // 第一次调用strtok时,传入原字符串和分隔符 while (p != NULL) { str_array[i++] = p; // 将分割得到的子字符串存储到字符串数组中 p = strtok(NULL, "\n"); // 继续调用strtok,传入NULL表示继续处理原字符串,直到处理完所有子字符串 } // 输出字符串数组中的内容 for (int j = 0; j < i; j++) { printf("%s\n", str_array[j]); } return 0; } ``` 这样就可以避免段错误的问题,同时保证 `cmdresult` 中的字符串以 null 结尾,可以正确进行后续的字符串操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值