为什么我的代码不输出到文本文件

时间:2012-07-18 20:41:06

标签: c

我编写了以下程序,当您从IDE运行它时,该程序运行良好。但是,当我想通过从inp.txt文件中输入并输出到out.txt文件来测试它时,它不会这样做。


#include <stdio.h>
#include <stdlib.h>

struct node
{
  int data;
  struct node *next;
}*start;

void insertatend(int d)
{
  struct node *n;
  n=(struct node *)malloc(sizeof(struct node));
  n->data=d;
  n->next=NULL;

  if(start==NULL)
  {
    start=n;
  }

  else
  {
    struct node *tmp;
    for(tmp=start;tmp->next!=NULL;tmp=tmp->next);
    tmp->next=n;
  }
}

int max(int  a,int b)
{
  int c=(a>b)?a:b;
  return c;
}

int maxCoins(int n)
{
  int arr[n+1],i;
  arr[0]=0;
  arr[1]=1;
  arr[2]=2;
  arr[3]=3;

  if(n>2)
  {


    for(i=3;i<=n;i++)
    {
      int k= arr[(int)(i/2)]+arr[(int)(i/3)]+arr[(int)(i/4)];
      arr[i]=max(i,k);
    }
  }

  return arr[n];
}

int main(void)
{
  int coins,i;
  start=NULL;
  struct node*p;

  while(scanf("%d",&coins)>0)
  {
    insertatend(coins);
  }

  for(p=start;p!=NULL;p=p->next)
  {
    printf("%d\n",maxCoins(p->data));
  }

  getchar();

  return 0;
}

我尝试在命令提示符ByteTest.exe<inp.txt>out.txt上执行以下操作,但未对out.txt文件进行任何更改。

输入CTRL+Z即可终止我的程序输入。这与此有关吗?


inp.txt and out.txt可能包含


inp.txt      out.txt

12             13
24             27
26             27

1 个答案:

答案 0 :(得分:2)

您的问题可能是:

while(scanf("%d",&coins)>0)

返回字符数。您不是在这里检查硬币的值,而是检查输入字符串的长度。