一个for循环,用于销毁原始字符串

时间:2013-04-26 16:25:11

标签: c

我目前正在尝试迭代字符串以找到第一个空白区域。 我想将该空格前的所有字符复制到不同的字符串中。

在这里,我正在处理更多我的代码:lineArray是全局的,并且由一个我没有复制的不同函数填充。

char *lineArray[16];

int startProcesses(int background) {

    int i = 0;
    int var = 0;
    int pid;
    int status;
    int len;
    char copyProcessName[255];

    while(*(lineArray+i) != NULL) {


    len = strlen(lineArray[i]);

    for (var = 0; var < len; ++var) {
        if(lineArray[i][var] != ' ') {
            copyProcessName[var] = lineArray[i][var];
        } else {
            break;
        }
    }

我知道这还没有完成,我错过了'\ 0',但在此之前我注意到在调试时第一次编译器尝试copyProcessName[var] = lineArray[i][var];赋值后,整个字符串在lineArray中[ i]被销毁,而不是例如包含ls -l,它被替换为ll - l

我会提到更多的东西: lineArray是一个全局变量,我确实尝试使用strcpy,但它导致了同样的破坏,所以这就是我选择实现它的原因,最后一件事是我使用的是ubuntu。

有谁知道为什么这样做?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我目前正在尝试迭代字符串以找到第一个空格。

冷却。

char s[] = "line with spaces";
char *p = strchr(s, ' '); // pointer to the first WS, if you need it
ptrdiff_t n = p - s; // or its position within the string, if that's what you're looking for