gpt4 book ai didi

c - 使用程序的输出作为同一程序的输入

转载 作者:行者123 更新时间:2023-11-30 19:29:40 25 4
gpt4 key购买 nike

我正在编写一个程序来生成给定数字序列的所有可能排列,然后从该排列生成所有可能的二叉树,因此,我认为有一个程序可以生成排列并将结果存储到文件中,然后编写进一步的代码来逐行读取(具有所有排列)并从中生成二叉树,所以现在我已经编写了一半程序来生成排列并将结果存储在文件中。

#include <stdio.h>

//function to print the array
void printarray(int arr[], int size)
{
FILE *fp;
int i,j;
fp=fopen("result.txt","w");
for(i=0; i<size; i++)
{
// printf("%d\t",arr[i]);
fprintf(fp,"%d\t",arr[i]);
}
printf("\n");
fclose(fp);
}

//function to swap the variables
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}

//permutation function
void permutation(int *arr, int start, int end)
{
if(start==end)
{
printarray(arr, end+1);
return;
}
int i;
for(i=start;i<=end;i++)
{
//swapping numbers
swap((arr+i), (arr+start));
//fixing one first digit
//and calling permutation on
//the rest of the digits
permutation(arr, start+1, end);
swap((arr+i), (arr+start));
}
}

int main()
{
//taking input to the array
int size;
printf("Enter the size of array\n");
scanf("%d",&size);
int i;
int arr[size];
for(i=0;i<size;i++)
scanf("%d",&arr[i]);
//calling permutation function
permutation(arr, 0, size-1);
return 0;
}

但是这个程序的问题是这个程序只存储一种排列,而不在 result.txt 文件中存储其他排列,我该如何继续以这种方式存储结果。此外,程序不会结束空白光标的闪烁,这会给人一种无限 while 循环的假象。我必须按 Ctrl+c 才能结束程序如何摆脱这个?

最佳答案

您的 fopen("result.txt","w"); 每次打开时都会截断文件。使用 fopen("result.txt","a"); 代替

关于c - 使用程序的输出作为同一程序的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52495226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com