因此我在尝试阅读由三行组成的文本文件时遇到问题。我试图读取每一行并创建每行的排列。我想继续循环执行此操作到每一行,直到我点击EOF。我试图在我的主要的while循环中实现fgets。我是在正确的轨道上吗?我遇到的主要问题是在我的主要文件中将char传递给我的排列方法。
#include <stdio.h>
void swap(char *x, char *y)
{
char tempVariable;
tempVariable = *x;
*x = *y;
*y = tempVariable;
}
void stringPermutation(char *a, int zeroVariable, int factorial)
{
int i;
if(zeroVariable == factorial)
{
printf("%s\n", a);
}
else
{
for(i = zeroVariable; i <= factorial; i++)
{
swap((a + zeroVariable), (a + i));
stringPermutation(a, zeroVariable + 1, factorial);
swap((a + zeroVariable), (a + i));
}
}
}
int main(int argc, char *argv[])
{
if(argc != 2)
{
printf("ERROR - WRONG AMOUNT OF ARGUMENTS\n");
}
else
{
FILE *file = fopen(argv[1], "r");
int x;
printf("PERMUTATIONS:\n");
while((x = fgetc(file)) != EOF)
{
stringPermutation(x, 0, x - 1); //I'm messing up here
}
fclose(file);
}
return 0;
}
答案 0 :(得分:0)
stringPermutation(x, 0, x - 1);
x
属于int
类型,获取char
的ASCII代码作为值,但函数stringPermutation
需要char *a
我建议使用fgets来读取文件的行。
答案 1 :(得分:0)
stringPermutation()
期待char*
不是char
或int
。
您正在通过char
。看起来stringPermutation
也将参数用作char*
,因此在这种情况下调用者是错误的。
看起来您需要将几个字符读入缓冲区并将缓冲区传递给stringPermutation()
。更简单地使用fgets
或getline
等在一次调用中读取字符串,而不是自己用char构建char。