这听起来很简单,但实际上要复杂一些。我想使用 unix 实用程序来删除连续的重复项,保留原来的。但是,我还想保留其他不会在原始之后立即出现的重复项。例如,如果我们有以下几行:
O B
O B
C D
T V
O B
Run Code Online (Sandbox Code Playgroud)
我希望输出是:
O B
C D
T V
O B
Run Code Online (Sandbox Code Playgroud)
尽管第一行和最后一行相同,但它们不连续,因此我想将它们保留为唯一条目。
我试图寻找正确的方法来实现这一点,从标准输入读取并打印到标准输出。我知道我可以使用挤压(-s)来删除相同类型的多行,但我想在许多行(而不仅仅是一行)中留下两个换行符。我也研究过使用 uniq,但不确定如何使用。我知道也可以使用折叠,但我找不到任何有关我想要的折叠版本折叠(1p)的信息。
所以,如果我有文本作为输入:
A B C D
B C D E
Run Code Online (Sandbox Code Playgroud)
我希望输出是
A B C D
B C D E
Run Code Online (Sandbox Code Playgroud) 我遇到了分段错误的麻烦,似乎是我试图printf()用来取消引用单个数组值,而不是使用指向我要打印的内存位置的指针.
如果我在一个函数中定义一个数组,并希望在包含的循环中传递该数组以通过char引用char printf(),我应该如何传递和引用该数组?
void arrayFunc(){
char array [5];
array[0] = 'a';
array[1] = 'b';
array[2] = 'c';
array[3] = 'd';
array[4] = 'e';
printArray(array);
}
void printArray(char* array1){
int i;
for(i = 0; i < 5; i++){
printf("%c", array1 + i);
}
}
Run Code Online (Sandbox Code Playgroud)
似乎没有完成工作.