Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 拆下'|';一串_C_Unix - Fatal编程技术网

C 拆下'|';一串

C 拆下'|';一串,c,unix,C,Unix,我编写了以下代码来替换字符串中的“|”字符 #include <stdio.h> #include <stdlib.h> void remove_pipes(char*); main (int argc, char **argv) { char string1[] = "|||||||||||||"; remove_pipes(string1); printf("String1 = %s", string1); char string2[] = "h|e|l|l|o

我编写了以下代码来替换字符串中的“|”字符

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

void remove_pipes(char*);

main (int argc, char **argv)
{

char string1[] = "|||||||||||||";
remove_pipes(string1);
printf("String1 = %s", string1);
char string2[] = "h|e|l|l|o";
remove_pipes(string2);
printf("String2 = %s", string2);
}

void remove_pipes(char* input)
{
  for(; *input; input++)
  {
      if(*input == '|')
      {
          *input = ' ';
      }
  }
}
#包括
#包括
移除管道(字符*);
主(内部argc,字符**argv)
{
char string1[]=“|||||||||||”;
拆除_管(1号线);
printf(“String1=%s”,String1);
字符字符串2[]=“h | e | l | l | o”;
拆除_管(第2条);
printf(“String2=%s”,String2);
}
无效删除_管道(字符*输入)
{
对于(;*input;input++)
{
如果(*输入==“|”)
{
*输入='';
}
}
}

现在我需要修改此方法以从字符串中删除“|”字符。我不知道该怎么做。希望有人能给我一些提示

使用字符指针移动输入并修改它:

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

void remove_pipes(char*);

main (int argc, char **argv)
{

    char string1[] = "|||||||||||||";
    printf("String1 = %s\n", string1);
    remove_pipes(string1);
    printf("String1 = %s\n", string1);
    char string2[] = "h|e|l|l|o";
    printf("String2 = %s\n", string2);
    remove_pipes(string2);
    printf("String2 = %s\n", string2);
}

void remove_pipes(char* input)
{
    unsigned idx = 0;
    char* aux = input;

    for(; *input; input++)
    {
        if (*input != '|')
        {
            *(aux + idx++) = *input;
        }
    }
    *(aux + idx) = '\0';
}
#包括
#包括
移除管道(字符*);
主(内部argc,字符**argv)
{
char string1[]=“|||||||||||”;
printf(“String1=%s\n”,String1);
拆除_管(1号线);
printf(“String1=%s\n”,String1);
字符字符串2[]=“h | e | l | l | o”;
printf(“String2=%s\n”,String2);
拆除_管(第2条);
printf(“String2=%s\n”,String2);
}
无效删除_管道(字符*输入)
{
无符号idx=0;
char*aux=输入;
对于(;*input;input++)
{
如果(*输入!=“|”)
{
*(aux+idx++)=*输入;
}
}
*(aux+idx)='\0';
}

使用字符指针移动输入并修改它:

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

void remove_pipes(char*);

main (int argc, char **argv)
{

    char string1[] = "|||||||||||||";
    printf("String1 = %s\n", string1);
    remove_pipes(string1);
    printf("String1 = %s\n", string1);
    char string2[] = "h|e|l|l|o";
    printf("String2 = %s\n", string2);
    remove_pipes(string2);
    printf("String2 = %s\n", string2);
}

void remove_pipes(char* input)
{
    unsigned idx = 0;
    char* aux = input;

    for(; *input; input++)
    {
        if (*input != '|')
        {
            *(aux + idx++) = *input;
        }
    }
    *(aux + idx) = '\0';
}
#包括
#包括
移除管道(字符*);
主(内部argc,字符**argv)
{
char string1[]=“|||||||||||”;
printf(“String1=%s\n”,String1);
拆除_管(1号线);
printf(“String1=%s\n”,String1);
字符字符串2[]=“h | e | l | l | o”;
printf(“String2=%s\n”,String2);
拆除_管(第2条);
printf(“String2=%s\n”,String2);
}
无效删除_管道(字符*输入)
{
无符号idx=0;
char*aux=输入;
对于(;*input;input++)
{
如果(*输入!=“|”)
{
*(aux+idx++)=*输入;
}
}
*(aux+idx)='\0';
}

是的,很有可能是作业。哇!!从管柱上移除管道的步骤到此为止。简单的
sed's/|//g'
可以帮你解决问题。看起来有些文本编辑器应该为OP工作:既可以证明任务的可能性,也可以实际执行任务:)。@jlliagre-我不是在这里要求代码解决方案,上面的代码是我根据之前在堆栈溢出中发布的一些内容从头开始编写的。我只是想得到一个暗示。因为这个变量是一个指针,我如何删除一个字符,这就是我被卡住的地方。我可以初始化另一个变量并附加非“|”值,然后将变量内容重新分配给char*input吗?提示:不能只从字符串中删除字符。给定一个字符串
“ab | cd”
,若要将其更改为
“abcd”
,您需要
c
在以前由
|
占据的位置,需要
d
在以前由
'c'
占据的位置,以及一个终止的
'\0'
在以前由
'd'
占据的位置。是,很有可能是作业。哇!!从管柱上移除管道的步骤到此为止。简单的
sed's/|//g'
可以帮你解决问题。看起来有些文本编辑器应该为OP工作:既可以证明任务的可能性,也可以实际执行任务:)。@jlliagre-我不是在这里要求代码解决方案,上面的代码是我根据之前在堆栈溢出中发布的一些内容从头开始编写的。我只是想得到一个暗示。因为这个变量是一个指针,我如何删除一个字符,这就是我被卡住的地方。我可以初始化另一个变量并附加非“|”值,然后将变量内容重新分配给char*input吗?提示:不能只从字符串中删除字符。给定一个字符串
“ab | cd”
,若要将其更改为
“abcd”
,您需要
c
位于以前由
|
占据的位置,
d
位于以前由
'c'
占据的位置,和一个终止的
'\0'
在以前由
'd'
占据的位置。感谢您的快速响应和回答。操作指针的聪明方法。非常感谢。感谢您的快速回复和回答。操作指针的聪明方法。非常感谢。