将char *指针复制到char数组变量

时间:2018-02-06 03:34:48

标签: c++

我创建了一个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);
}

我引用了我收到错误的地方。 请纠正是否有任何错误。

1 个答案:

答案 0 :(得分:1)

要将一个C风格的字符串复制到另一个,您必须使用strcpy(word1, a);。只有使用std::string(推荐!)才能使用=进行分配。

您在尝试写入输入文件的flame<<word;中也有错误。要阅读单词,您需要flame >> word;

使用std::swap代替实现自己的代码可能会更容易。

另一位是tolower(word[0]);,它不修改参数但返回结果。你应该保存它。