1

我正在尝试编写一个命令来替换文件中的字符。例如,. /replace E XY hello.txt [b]hello.txt [/b] 包含单词 [b]HELLO WORLD[/b]。字母 E 将替换为 XY。因此,HELLO WORLD将成为HXYLLO WORLD。 我已将文件读入char buf[100]

 0   1   2   3   4  5   6   7   8   9   10
[H]-[E]-[L]-[L]-[O]-[]-[W]-[O]-[R]-[L]-[D]

我想说:

If buf[x] == argv[1],
then buf[x] = argv[2]

其中 x 是一个特定的缓冲区元素(在这种情况下是 buf[1] == argv[1])。

我收到此错误:assignment 使 integer without cast

如何将缓冲区中的元素与参数向量进行比较?

4

2 回答 2

0

如果您需要一个程序来替换所描述的字符串(以及更多),请尝试streplace.

如果您想实现这一点,请尝试使用 Java、C++ 或 Python 等语言,其中字符串处理比 C 容易得多。

如果您必须使用 C,则必须使用诸如“strcmp()”、“strcpy()”、“memcpy()”或“memmove()”之类的函数。提示:char buf[100]读取整个文件可能也不是一个好的选择。

评论后编辑:请考虑您的概念和设计 - 这是不行的。示例:在当前解决方案中,您错过了在一个“读取”块中开始并在下一个块中结束的匹配。

您当前的程序也有一些问题:恕我直言,您“忘记”关闭第 40 行中的注释,该注释跳过了与程序的其余部分混淆的右括号。

请:在你输入之前三思!先做一个设计,然后写下来。

另请:阅读(并理解)原始答案(尤其是带有字符串函数的部分);调整你的程序。

于 2012-04-19T15:19:57.700 回答
0

假设您正在使用 C(这似乎很可能给出错误消息):

您不能在 C 中以这种方式比较字符串。您现在只是在比较指针。你想这样做:

if (! strcmp(buf, argv)) {
  // strings are equal
}

您可能想阅读C 字符串处理

于 2012-04-19T13:44:31.327 回答