| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2807 人关注过本帖
标题:下面程序怎样改程序运行的结果才能输出到文件呢?
只看楼主 加入收藏
lyxcjm
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2011-4-16
结帖率:88.89%
收藏
已结贴  问题点数:50 回复次数:13 
下面程序怎样改程序运行的结果才能输出到文件呢?
#include <stdio.h>
#include <stdlib.h>

int  same_state=0;            //包含状态位
void findout(int a[],int n,int m,int r,int q[],int **BB,int bb);
void main()
{
    int n,r;int *p,*q;
    int b,bb;int **B;        //存储要删除的数组
    printf("要找的不同的整数个数:");
    scanf("%d",&n);
    p=(int*)malloc(n*sizeof(int));
    printf("输入%d个不同的整数:",n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&p[i]);
    }
    printf("输入要找元素组合的个数:");
    scanf("%d",&r);
    q=(int *)malloc(r*sizeof(int));
   
   
    printf("\n输入你将要输入的数组个数:");          //根据你的例子有两个数组,这里应该输入2
     scanf("%d",&bb);
    B=(int **)malloc(bb*sizeof(int*));

    for( i=0;i<bb;i++)
    {
        B[i]=(int *)malloc(sizeof(int));
        B[i][0]=0;
        printf("请输入第%d个数组:",i+1);
      for(int j=2;1;j++)
      {
      
      
         scanf("%d",&b);
         if(b==0) break;                                   //每输入一个数组后请输入一个0来结束输入
         else        
         {
             B[i]=(int *)realloc(B[i],j*sizeof(int));
             B[i][j-1]=b;
             B[i][0]++;
         }

      }
    }
    findout(p,n,r,r,q,B,bb);
}

void findout(int a[],int n,int m,int r,int q[],int **BB,int bb)
{
    for(int i=n;i>=m;i--)
    {
        q[m-1]=a[i-1];
        if(m>1)
            findout(a,i-1,m-1,r,q,BB,bb);
        else
        {   

    /*---这段是比较,如果输出数组中包含了其中一项要删除的数组,same_state将变为b,否则仍然是0---*/
            same_state=0;
            for(int x=0;x<bb;x++)
            {
               for(int y=0;y<BB[x][0];y++)
               {
                  if(same_state!=y) break;
                  for(int z=0;z<r;z++)
                  {
                     if(q[z]==BB[x][y+1])
                     {
                       same_state++;
                     }

                  }
                  
               
               }
               if(same_state==BB[x][0]) break;
               else              same_state=0;
            }

    /*---------------------------------------------------------------------------------*/
            if(same_state==0)
            {
            for(int j=r-1;j>=0;j--)
                printf("%d   ",q[j]);
            putchar('\n');
            
            }
        }
        
    }

}
搜索更多相关主题的帖子: include 元素 
2012-08-01 21:44
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
将程序中,结果输出处,改为文件操作就行了

★★★★★为人民服务★★★★★
2012-08-01 22:11
lyxcjm
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2011-4-16
收藏
得分:0 
怎么改。。。帮忙改改。。。谢谢
2012-08-02 19:25
lyxcjm
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2011-4-16
收藏
得分:0 
回复 2楼 cnfarer
怎么改。。。帮忙改改。。。谢谢
2012-08-02 20:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
在cmd窗口中运行程序,假设你编译后的程序是test.exe,则命令如下:
test > aaa.txt<Enter>
程序输出的画面将导向到aaa.txt文本文件中(此时屏幕不会有输出),也就是说,不要再用scanf()来输入数据了,因为屏幕是黑的。

如果要同时在屏幕上输入数据而把输出灌到文件,将相关的输出printf()改为fprintf(),按需要将文件句柄FILE* file中的file切换为stdout(输出到屏幕)和file(设定的输出文件)。

授人以渔,不授人以鱼。
2012-08-02 21:06
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:40 
程序代码:
void findout(int a[],int n,int m,int r,int q[],int **BB,int bb)
{
    FILE *fp=fopen("d:\\xxxx.txt","w+");//创建一个文件
    for(int i=n;i>=m;i--)
    {
     .....
    /*---------------------------------------------------------------------------------*/
            if(same_state==0)
            {
            for(int j=r-1;j>=0;j--)
        fprintf(fp,"%d   ",q[j]);//写数据
        fprintf(fp,"\n");
                
                //printf("%d   ",q[j]);
           // putchar('\n');
            
            }
        }    
    }
    fclose(fp);
} 


★★★★★为人民服务★★★★★
2012-08-02 21:21
lyxcjm
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2011-4-16
收藏
得分:0 
回复 6楼 cnfarer
怎么我按你说的改了,不过,程序运行的结果输不到文件里呢,看看哪里出错了
#include <stdio.h>
#include <stdlib.h>

int  same_state=0;            //包含状态位
void findout(int a[],int n,int m,int r,int q[],int **BB,int bb);
void main()
{
    int n,r;int *p,*q;
    int b,bb;int **B;        //存储要删除的数组
    printf("要找的不同的整数个数:");
    scanf("%d",&n);
    p=(int*)malloc(n*sizeof(int));
    printf("输入%d个不同的整数:",n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&p[i]);
    }
    printf("输入要找元素组合的个数:");
    scanf("%d",&r);
    q=(int *)malloc(r*sizeof(int));
   
   
    printf("\n输入你将要输入的数组个数:");          //根据你的例子有两个数组,这里应该输入2
     scanf("%d",&bb);
    B=(int **)malloc(bb*sizeof(int*));

    for( i=0;i<bb;i++)
    {
        B[i]=(int *)malloc(sizeof(int));
        B[i][0]=0;
        printf("请输入第%d个数组:",i+1);
      for(int j=2;1;j++)
      {
      
      
         scanf("%d",&b);
         if(b==0) break;                                   //每输入一个数组后请输入一个0来结束输入
         else        
         {
             B[i]=(int *)realloc(B[i],j*sizeof(int));
             B[i][j-1]=b;
             B[i][0]++;
         }

      }
    }
    findout(p,n,r,r,q,B,bb);
}

void findout(int a[],int n,int m,int r,int q[],int **BB,int bb)
{FILE *fp=fopen("d:\\xxxx.txt","w+");//创建一个文件

    for(int i=n;i>=m;i--)
    {
        q[m-1]=a[i-1];
        if(m>1)
            findout(a,i-1,m-1,r,q,BB,bb);
        else
        {   

    /*---这段是比较,如果输出数组中包含了其中一项要删除的数组,same_state将变为b,否则仍然是0---*/
            same_state=0;
            for(int x=0;x<bb;x++)
            {
               for(int y=0;y<BB[x][0];y++)
               {
                  if(same_state!=y) break;
                  for(int z=0;z<r;z++)
                  {
                     if(q[z]==BB[x][y+1])
                     {
                       same_state++;
                     }

                  }
                  
               
               }
               if(same_state==BB[x][0]) break;
               else              same_state=0;
            }

    /*---------------------------------------------------------------------------------*/
                        if(same_state==0)
            {
            for(int j=r-1;j>=0;j--)
        fprintf(fp,"%d   ",q[j]);//写数据
        fprintf(fp,"\n");
               
                //printf("%d   ",q[j]);
           // putchar('\n');
            
            }
        }   
    }
    fclose(fp);
}

2012-08-03 20:43
lyxcjm
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2011-4-16
收藏
得分:0 
文件是创建成功了
可是是空的。。。
2012-08-03 20:45
lyxcjm
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2011-4-16
收藏
得分:0 
屏幕上也没有输出
2012-08-03 20:48
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
for(int j=r-1;j>=0;j--){
    fprintf(fp,"%d   ",q[j]);//写数据
    printf("%d   ",q[j]);
}
fprintf(fp,"\n");
putchar('\n');
            
改成这样,屏幕显示应与文件内容一致

★★★★★为人民服务★★★★★
2012-08-04 07:22
快速回复:下面程序怎样改程序运行的结果才能输出到文件呢?
数据加载中...
 
   



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

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