我正在尝试编写一个命令来替换文件中的字符。例如, ./替换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])。
我收到此错误:赋值不使用强制转换。
如何将缓冲区中的元素与参数向量进行比较?
答案 0 :(得分:0)
假设您正在使用C(似乎可能会出现错误消息):
你不能只用C语言来比较字符串。你现在只是在比较指针。 你想做到这一点:
if (! strcmp(buf, argv)) {
// strings are equal
}
您可能希望阅读C string handling。
答案 1 :(得分:0)
如果您需要一个程序来替换所描述的字符串(以及更多),请尝试streplace
。
如果要实现此功能,请使用Java,C ++或Python等语言进行尝试,其中字符串处理比C语言更容易。
如果必须使用C,则必须使用'strcmp()','strcpy()','memcpy()'或'memmove()'等函数。提示:char buf[100]
可能也不是读取整个文件的好选择。
评论后编辑: 请考虑一下你的概念和设计 - 这不行。示例:使用当前解决方案,您将错过与“读取”块中的“开始”匹配,并在下一个“结束”中结束。
你当前的程序还有一些问题:恕我直言,你忘了关闭第40行的评论,该评论会跳过关闭括号,这会对程序的其余部分造成混乱。
请:在打字之前考虑一下!首先进行设计并将其写下来。
另外请:阅读(并理解)原始答案(特别是带有字符串功能的部分);适应你的计划。