0

我正在用 C 语言编写一个简单的 Unix shell。这就是我目前所拥有的。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main() {
    char x[256], y[256], z[256];
    while (1) {
        getcwd(y, sizeof(y));
        printf("%s$ ", y);
        fgets(x, sizeof(x), stdin);
        if (x[0] == 'c' && x[1] == 'd' && x[2] == ' ') {
            sscanf(x, "cd %s", &z);
            chdir(z);
        }
        else if (strcmp(x, "exit\n") == 0) break;
        else system(x);
    }
    return 0;
}

我想做的是让波浪字符 (~) 和 $HOME 可以互换。我想我可以用一个简单的查找和替换功能来做到这一点。有谁知道这样的事情?

4

1 回答 1

0

我认为您要查找的是strstr(),它定位字符串中的子字符串,而 strchr() 定位单个字符。找到起始索引后,您可以将字符串的前后部分复制~到新字符串中。

此问题中包含 str_replace 的实现

于 2010-09-18T18:34:08.890 回答