gpt4 book ai didi

c - 如何将字符串拆分为不同的类型(int 表示数值,char 表示字母)?

转载 作者:太空宇宙 更新时间:2023-11-04 04:07:55 25 4
gpt4 key购买 nike

例如,我有这个字符串:SMUL 9 A B?我怎样才能得到9(int型)A(char)和B(char)。可能的字符串可能是SMUL 12 A C,所以这意味着它们在字符串中的位置不是常量。

进一步说明:这是用户为我的矩阵计算器程序输入的字符串。输入SMUL "scalar""matrix-1""matrix-2"表示矩阵运算是一个SCALAR MULTIPLICATION,"scalar"为要乘以矩阵的数,"matrix-1"为要乘以的矩阵标量,“matrix-2”是显示结果的矩阵。希望你能帮助我。我的项目现在将在 2 天后到期。

最佳答案

strtok 不可重入并转移空 token 。sscanf 可以工作并且可以为您检测数字列或字符串列。

#include <stdio.h>

typedef struct {
char op[20];
union {int arg1num;char arg1str[20];} arg1;
char arg2[20],arg3[20];
} Value;

main()
{
Value v;
char withNumber[]="SMUL 9 A B ";
char withoutNumber[]="SMUL \"scalar\" \"matrix-1\" \"matrix-2\" ";

if( 4==sscanf(withNumber,"%[^ ]%d %[^ ] %[^ ]",v.op,&v.arg1.arg1num,v.arg2,v.arg3) )
printf("wN:%s %d %s %s\n",v.op,v.arg1.arg1num,v.arg2,v.arg3);
if( 4==sscanf(withoutNumber,"%[^ ] %[^ 0-9] %[^ ] %[^ ]",v.op,v.arg1.arg1str,v.arg2,v.arg3) )
printf("woN:%s %s %s %s\n",v.op,v.arg1.arg1str,v.arg2,v.arg3);
if( 4==sscanf(withoutNumber,"%[^ ]%d %[^ ] %[^ ]",v.op,&v.arg1.arg1num,v.arg2,v.arg3) )
printf("wN:%s %d %s %s\n",v.op,v.arg1.arg1num,v.arg2,v.arg3);
if( 4==sscanf(withNumber,"%[^ ] %[^ 0-9] %[^ ] %[^ ]",v.op,v.arg1.arg1str,v.arg2,v.arg3) )
printf("woN:%s %s %s %s\n",v.op,v.arg1.arg1str,v.arg2,v.arg3);
return 0;
}

关于c - 如何将字符串拆分为不同的类型(int 表示数值,char 表示字母)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3546569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com