| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 643 人关注过本帖
标题:新人求帮助,哪位大神有空能帮我看看代码哪里出错了,谢谢
只看楼主 加入收藏
wowowjr
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-3-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
新人求帮助,哪位大神有空能帮我看看代码哪里出错了,谢谢
prog1.zip (954 Bytes)

题目是有一个txt格式的文件, 里面的数字都是整数且只有一行,以空格隔开,但长度未知。现在要求写一段代码读取该文件中所有的数字并且求和,还要算出每个数字所对应的斐波纳契数列。自己尝试写了一段但是完全没法运行,求帮助!万分感谢!
程序代码:
#define MAX_NUM 256
#define MAX_L 256
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int fib (int n){
    int f[n+1];
    f[1]=f[2]=1;
    for (int i = 3; i<n; i++){
        f[i] = f[i-1] + f[i-2];
    }
    return f[n];
}

int main(int argc, char *argv[]){
  char file[100];
  int sum = 0;
  int a[MAX_NUM];
  FILE *myFile = fopen("input.txt", "r");

  if(myFile==NULL){
    printf("error\n");
  }
  else{
    
  int n = 0;
  int l = 0;
  //int sum = 0;
  char ch = getc(myFile);
  while(ch!=EOF){
    char str[MAX_NUM]=" ";
    while(1){
        if(ch == ' '){
        a[l]=atoi(str);
        n=0;
        l++;
        ch = getc(myFile);
        break;
        }
    }
  }
  }
  printf("The Fibnacci Sequence of each number is:\n");
  for(int i=0;i<MAX_L;i++){
    sum = sum + a[i];
          printf("Fib(%d) is %d\n", a[i], fib(a[i]));

  }
  printf("Sum is %d\n", sum);
  fclose(myFile);
  return 0;
}


[此贴子已经被作者于2017-3-22 06:47编辑过]

2017-03-22 06:36
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10566
专家分:43004
注 册:2014-5-20
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

/*
假设test.txt的一行内容为:
1 22  333   4444

示例只读出各数值
*/
#include <stdio.h>
main()
{
    int a;
    FILE *fp = fopen("test.txt", "r");
    while (fscanf(fp, "%d", &a) == 1)
            printf("%d\n", a);
    fclose(fp);
}
2017-03-22 07:02
wowowjr
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-3-22
收藏
得分:0 
回复 2楼 吹水佬
请问如何将读出的整数存进一个数组以便下一步的计算使用呢
2017-03-22 07:08
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
读取数量不一致的文件数据。
你可以逐一读取,以回车做为一行的结束判断。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-03-22 07:29
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10566
专家分:43004
注 册:2014-5-20
收藏
得分:0 
以下是引用wowowjr在2017-3-22 07:08:58的发言:

请问如何将读出的整数存进一个数组以便下一步的计算使用呢

可以加个计数变量或用动态数组。
2017-03-22 07:36
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10566
专家分:43004
注 册:2014-5-20
收藏
得分:20 
#include <stdio.h>
#include <stdlib.h>
main()
{
    int *a=(int*)malloc(1*sizeof(int));
    int i, n=0;
    FILE *fp = fopen("test.txt", "r");
    while (fscanf(fp, "%d", &a[n]) == 1)
        a = (int*)realloc(a, (++n+1)*sizeof(int));
    fclose(fp);
    for (i=0; i<n; i++)
        printf("%d\n", a[i]);
    free(a);
}


[此贴子已经被作者于2017-3-22 08:09编辑过]

2017-03-22 08:08
wowowjr
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-3-22
收藏
得分:0 
回复 6楼 吹水佬
万分感谢!
2017-03-22 11:55
快速回复:新人求帮助,哪位大神有空能帮我看看代码哪里出错了,谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016373 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved