社区
C语言
帖子详情
请问 如何读取每行第二个数据? 如何实现这样的要求?
bborn
2005-07-26 09:00:23
数据格式是这样的
data1,data2,........
....................
数据是用逗号隔开的
每行的个数不知道 但是是统一的
如何按要求读入每行 特定列的数据?
...全文
234
21
打赏
收藏
请问 如何读取每行第二个数据? 如何实现这样的要求?
数据格式是这样的 data1,data2,........ .................... 数据是用逗号隔开的 每行的个数不知道 但是是统一的 如何按要求读入每行 特定列的数据?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hjf1010
2005-07-29
打赏
举报
回复
写错了,fscanf(fp,"%d",buf);应该是fscanf(fp,"%s",buf);
粗心大意!!!!!
hjf1010
2005-07-29
打赏
举报
回复
楼主还没有确定使用那种方案吗??
昨天特意试验了一下.
在文本文件中,数字和字符都可以读为字符串,比如
fscanf(fp,"%d",buf);可以将一行读到缓冲区中,遇到"\n"结束,但是不把"\n"读到字符串中;
但是也可以使用fscanf进行格式化读取,楼主不是想读第一个逗号后第二个逗号前的数据码
用fscanf(fp,"%d,%d,%s\n",&iTmp,&num,buf);可以实现对每行的格式化读取,num就是需要的数据,第二个逗号后的所有东西读到缓冲区中.
fgets可以实现和fscanf相似的功能,不同点,fgets可以控制每次读取的字符数,遇到"\n"也结束,但是把"\n"也读到缓冲区.
综上所述,如果文档是格式化比较好的用fscanf完全可以满足楼主的要求
bborn
2005-07-29
打赏
举报
回复
加80分结贴
bborn
2005-07-29
打赏
举报
回复
谢谢楼上各位 尤其是 黑色狂人 我看到那个帖子你的程序了
我试一下 弄好了就揭帖
bborn
2005-07-28
打赏
举报
回复
问题是我不是甲方
LoveYouJustOneDay
2005-07-28
打赏
举报
回复
气死人啊
这么简单的东西
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
char sd[1000], *p, *q;
int data[100], index=0, i;
fp=fopen("test.txt", "r");
while( fgets(sd, 1000, fp) )
{
p=sd;
while(*p++ != ',');
q=p;
while( (*q != ',') && (*q != '\0') ) q++;
*q = '\0';
sscanf(p, "%d", &data[index++]);
}
fclose(fp);
for(i=0; i<index; i++)
printf("%d ", data[i]);
system("PAUSE");
return 0;
}
test.txt
1,15,16,17
1,1
1,2,3
4,5,6,7,8
45,46
101,102,103
如果数据是字符串
sscanf( )里的 %d 用 %s
data[i]用指针
char *data[100];
data[i] 根据 字符串的长度动态分配
sjw7474235
2005-07-28
打赏
举报
回复
你可以在写文本时候给每个数据规定长度。读取的时候不就简单了吗。。
我用vb实现过。当时不会数据库只能用这个方法来存取数据。
bborn
2005-07-28
打赏
举报
回复
还是不行 再等几天
ken0426
2005-07-26
打赏
举报
回复
楼主说的应该是CSV格式吧!
zyfire88
2005-07-26
打赏
举报
回复
楼主的数据是放哪的,说清楚一点啊
login__whf
2005-07-26
打赏
举报
回复
up
megaboy
2005-07-26
打赏
举报
回复
楼主的数据很可能不是字符形式存储的,假设都是int数据,可以用:
fscanf("%d,",&data[0]);来读取。
csjOscar_boco
2005-07-26
打赏
举报
回复
char ch;
char temp[20];
打开文件
while(不是文件尾){
while (读取字符ch不是','){
指向下一个字符;
}
i=0;
while (读取字符ch不是',')
{
temp[i]=ch;
i++;
}
temp[i]='\0';
判断回车到下一行;
}
代码自己写,很简单
hjf1010
2005-07-26
打赏
举报
回复
以下是算法:
先用fgets()读取一行到一个数组
再用strstr()找到第一个','
用一个指针ptr指向这个逗号后一位,再以这个指针ptr及strstr()找到','
读取ptr指向的、逗号之前的字符
循环,依次类推,得到所有行
ywchen2000
2005-07-26
打赏
举报
回复
写个split函数
WecanHuang
2005-07-26
打赏
举报
回复
那就找逗号,记录逗号的个数和位置
PMsg
2005-07-26
打赏
举报
回复
原数据存储在哪?文件里还是数组
要是数组就比较简单了 2D数组
for(i=0;i<n;i++)
xx[i][2] //i行的第2个
LoveYouJustOneDay
2005-07-26
打赏
举报
回复
如果data不是字符串
fgets读入一行到内存
sscanf( )一下
把第一个数据用一个临时变量吸收掉就好了
yyy790601
2005-07-26
打赏
举报
回复
每行数据个数不固定,怎么fscanf?
我同意楼上前面这个说法:
以下是算法:
先用fgets()读取一行到一个数组
再用strstr()找到第一个','
用一个指针ptr指向这个逗号后一位,再以这个指针ptr及strstr()找到','
读取ptr指向的、逗号之前的字符
循环,依次类推,得到所有行
hjf1010
2005-07-26
打赏
举报
回复
fscanf(fp,"%d,%d,%s\n",&temp,&dest,str)
加载更多回复(1)
Android ListView列表分组.docx
Android ListView列表分组.docx
Android Camera相关知识(1).docx
Android Camera相关知识(1).docx
计算机专业项目代码:基于Java ME无线网络移动端的俄罗斯方块游戏的
实现
(源代码+论文).7z
计算机专业毕业设计项目源码、论文
医院信息化建设.doc
医院信息化建设.doc
虚拟化环境的稳定性.pptx
虚拟化环境的稳定性.pptx
C语言
70,020
社区成员
243,264
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章