我创建了一个Word涂鸦解算器,它基本上计算了给定单词的排列,并将其与可用字典进行比较。 但问题是我将char指针复制到数组char变量来比较它们,我不知道该怎么做。 以下是我的代码段:
#include<fstream>
#include<string>
#include<ctype>
using namespace std;
void swap(char *x, char *y)
{
char temp;
temp = *x;
*x = *y;
*y = temp;
}
void permute(char *a, int l, int r)
{
char word[25], word1[25];
fstream flame;
if(l == r)
{
word1 = *a; /* <— Error! */
flame.open("dic.sly", ios::in);
while(!flame.eof())
{
flame << word;
tolower(word[0]);
if(strcmp(word, word1) == 0)
cout << word;
}
flame.close();
}
else
{
for(int i = l; i <= r; i++)
{
swap((a + l), (a + i));
permute(a, l + 1, r);
swap((a + l), (a + i));
}
}
}
void main()
{
char str[] = "lonea";
int n = strlen(str);
permute(str, 0, n - 1);
}
我引用了我收到错误的地方。 请纠正是否有任何错误。
答案 0 :(得分:1)
要将一个C风格的字符串复制到另一个,您必须使用strcpy(word1, a);
。只有使用std::string
(推荐!)才能使用=
进行分配。
您在尝试写入输入文件的flame<<word;
中也有错误。要阅读单词,您需要flame >> word;
。
使用std::swap
代替实现自己的代码可能会更容易。
另一位是tolower(word[0]);
,它不修改参数但返回结果。你应该保存它。