提问人:omar ghazi 提问时间:9/22/2023 最后编辑:Barmaromar ghazi 更新时间:9/22/2023 访问量:53
用 c 搜索和替换程序不起作用?
Search and replace programme with c doesn't work fine?
问:
大家好,我有一个问题要用 C 解决,但程序不能正常工作 这是主题:
编写一个名为 search_and_replace 的程序,它接受 3 个参数, 第一个参数是替换字母(第二个参数)的字符串 参数)由另一个(第三个参数)。如果参数数 不是 3,只需显示换行符。如果不包含第二个参数 在第一个(字符串)中,程序只需重写 字符串后跟换行符。
例子:
$>./search_and_replace "Papache est un sabre" "a" "o" Popoche est un sobre
这是完整的代码;
#include <unistd.h>
int main(int argc, char **argv)
{
int i;
int j;
int k;
int replace;
i = 0;
j = 0;
if (argc == 4)
{
while(argv[1][i])
{
while(argv[2][j] != '\0' && argv[1][i] == argv[2][j])
{
while(argv[3][k])
{
k = 0;
replace = argv[2][j];
argv[2][j] = argv[3][k];
argv[3][k] = replace;
k++;
}
argv[1][i] = argv[2][j];
j++;
}
write(1, &argv[1][i], 1);
i++;
}
}
}
我正在尝试更改循环中的变量声明,并在 juste 2 中设置所有条件,而
答:
1赞
Barmar
9/22/2023
#1
你有几个不必要的循环。第 2 个和第 3 个参数只是单个字符,而不是需要循环的字符串。您只需将出现的任何 替换为 。argc[2][0]
argc[3][0]
您也不需要在找到匹配项之间和找到匹配项时交换字符。argv[2]
argv[3]
#include <unistd.h>
#include <string.h>
int main(int argc, char **argv)
{
if (argc == 4 && strlen(argc[2]) > 0 && strlen(argc[3]) > 0)
{
char *string = argc[1];
char old = argc[2][0];
char new = argc[3][0];
for (int i = 0; string[i]; i++) {
if (string[i] == old) {
string[i] = new;
}
}
write(STDOUT_FILENO, string, strlen(string));
}
write(STDOUT_FILENO, "\n", 1); // write a newline after the replacement
}
评论
while(argv[3][k])
k
i = 0; j = 0;
k = 0;
k++;
for
while