C语言读文本一行后,怎样提取这一行中的某一部分

xiaoling9 2003-10-16 08:30:03
C语言读文本一行后,怎样提取这一行中的某一部分
例如:123 2344 2323 343434 343434
我想把123 和 2323单独提取出来,怎样做??谢谢!!!
...全文
128 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
TopCoderONE 2003-10-17
  • 打赏
  • 举报
回复
或者更爽一点,用状态机实现一下
已经知道字符串最后一列是S了
int Count[10]; 0到9的个数
int stat;
char CaluChar(char* str)
{
memset(Count[10],0,sizeof(int)*10);
stat=0;
for(int i=0;i<strlen(str);i++)
TransState(str[i]);
}
void TransState(char ch)
{
switch(stat)
{
case 0:
if(ch != ' ')
state++;

break;
case 1:
if(ch != ' ')
cout<<ch;
else
{
stat++;
cout<<" ";
}
break;
case 2:
case 4:
case 6:
if(ch != ' ')
stat++;

break;
case 3:
case 5:
if(ch == ' ')
stat++;
break;
case 7:
if(ch >='0' && ch <='9')
Count[ch-'0']++;
if(ch == ' ')
stat++;
break;


}
}
数字个数统计到Count数组中了
TopCoderONE 2003-10-17
  • 打赏
  • 举报
回复
用 strtok 如 从"111 222 333 444"中取出333则
char *p="111 222 333 444";
char *pNew=strtok(p," ");
for(int i=0;i<2;i++)
pNew=strtok(NULL," ");
xiaoling9 2003-10-17
  • 打赏
  • 举报
回复
只能用C的文件操作完成,不能用数据库,所以还请各位帮忙
Lorenes 2003-10-17
  • 打赏
  • 举报
回复
好像只好用分头统计了....

如果统计的数据多了,做好耗费资源的准备.

一个建议: 把数据放到数据库里,直接用 T-SQL 命令就OK了.
minghui000 2003-10-17
  • 打赏
  • 举报
回复
??
xiaoling9 2003-10-16
  • 打赏
  • 举报
回复
人工指定,这是一组数据库文件转换成的文本文件,是这样的格式

0001 34343 34343 343434 343434 4444 C
0002 123 233 234556 12345 678 S
0003 222 1111 456 5678 2323 S
要求把最后一列是S 的行中的第四列中的数各个数字统计出来,然后打印到屏幕。
例如:打印到屏幕的结果为
0002 1个2 1个3 1个4 2个5 1个6
0003 1个4 1个5 1个6




laomai 2003-10-16
  • 打赏
  • 举报
回复
看你的数据行,大概意思是每个数据用空格分开,现在的任务是把数据分离出来吧?
laomai 2003-10-16
  • 打赏
  • 举报
回复
你说的某一部分有什么特点吗?或者,要提取的部分是人工指定还是由程序自动找出来
buaaaladdin 2003-10-16
  • 打赏
  • 举报
回复
用strtod循环提取各个数字,想要的保留下来。
tuxw 2003-10-16
  • 打赏
  • 举报
回复
sscanf("123 2344 2323 343434 343434", "%d %d %d %d", &a, &b, &c, &d);
vanter 2003-10-16
  • 打赏
  • 举报
回复
int a,b,c,d,e;
sscanf("123 2344 2323 343434 343434", &a, &b, &c, &d, &e);

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧