fgets()读取字符串数组问题

qq_24345541 2018-05-02 09:30:03
我想把一个维数组读入到缓存中,然后在提取第一行数据
部分代码如下
char *bufs[256]
int n,nn,fs,fe;

for (n=0;n<402;n++){
fgets(bufs[n], 80, rfp);

sscanf(bufs[n], "%d %lf %lf", &nn, &fs, &fe);
}
sscanf(bufs[0], "%lf %lf", &fs, &fe);
这样可以么,运行时总出错,应该怎么修改,求解答,是因为没有数组初始化的问题么
...全文
60881 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-05-03
  • 打赏
  • 举报
回复
static char bufs[80]
int n;
int nn[402];
double fs[402],fe[402];
FILE *rfp;
rfp=fopen("d:\\mydir\\mydata.txt","r");
if (rfp) {
    for (n=0;n<402;n++) {
        if (NULL==fgets(bufs, 80, rfp)) break;
        if (3==sscanf(bufs, "%d%lf%lf", &nn[n], &fs[n], &fe[n])) {
            printf("%d %d %lg %lg\n",n,nn[n],fs[n],fe[n]);
        } else {
            break;
        }
    }
    fclose(rfp);
} else {
    printf("Can not open file [%s]!\n","d:\\mydir\\mydata.txt");
}
赵4老师 2018-05-03
  • 打赏
  • 举报
回复
static char bufs[402][80]
int n,nn;
double fs,fe;
FILE *rfp;
rfp=fopen("d:\\mydir\\mydata.txt","r");
if (rfp) {
    for (n=0;n<402;n++) {
        if (NULL==fgets(bufs[n], 80, rfp)) break;
        if (3==sscanf(bufs[n], "%d%lf%lf", &nn, &fs, &fe)) {
            printf("%d %d %lg %lg\n",n,nn,fs,fe);
        } else {
            break;
        }
    }
    fclose(rfp);
} else {
    printf("Can not open file [%s]!\n","d:\\mydir\\mydata.txt");
}
自信男孩 2018-05-03
  • 打赏
  • 举报
回复
char *bufs[256]
int n,nn,fs,fe;

 for (n=0;n<402;n++){
fgets(bufs[n], 80, rfp);
第一个问题:bufs的长度是256,n的循环是从0~401,这样会有数组越界的问题。 第二个问题:bufs是指针数组,每个指针都是一个野指针,所以要使用之前需要将其指向可以读写的内存位置。可以考虑使用malloc/free方式动态申请内存空间;
白色一大坨 2018-05-03
  • 打赏
  • 举报
回复
fgets表示从文件里面读数据,你的文件打开在哪里?以下是一个fget的调用示例:

FILE * fp = fopen(argv[1],"r");
char buf[200];
while (fgets(buf,200,fp) != NULL) {    /* 每行的字符不能超过199才能正常工作 */
      printf("%s",buf);
}
dark9527 2018-05-03
  • 打赏
  • 举报
回复
fgets的第三个参数是一个FILE*指针

69,374

社区成员

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

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