C 将结构定义压缩为一行并使用sed制作两个副本
已经有人试图回答这个问题,但没有一个答案对我的具体案例有效 我有一个用c写的程序,它有两种多行结构。我需要弄清楚如何使用unix实用程序sed将这些结构定义压缩到一行,然后制作两个副本,因此总共有三个结构定义副本 下面是我的c程序示例:C 将结构定义压缩为一行并使用sed制作两个副本,c,unix,C,Unix,已经有人试图回答这个问题,但没有一个答案对我的具体案例有效 我有一个用c写的程序,它有两种多行结构。我需要弄清楚如何使用unix实用程序sed将这些结构定义压缩到一行,然后制作两个副本,因此总共有三个结构定义副本 下面是我的c程序示例: #include <stdio.h> #include <stdlib.h> struct node { int val; struct node *next; }; typedef struct { int
#include <stdio.h>
#include <stdlib.h>
struct node {
int val;
struct node *next;
};
typedef struct {
int numer;
int denom;
} Rational;
int main()
{
struct node head;
Rational half, *newf = malloc(sizeof(Rational));
head = (struct node){ 5, NULL };
half = (Rational){ 1, 2 };
*newf = (Rational){ 2, 3 };
return 0;
}
我知道sed命令看起来像sed'/*struct.*/N;'test.c查找结构,然后使用一条分支语句将结构定义的其余行追加到单行。下面介绍如何执行此操作。创建一个调用sed-f的文件,然后创建一个包含sed命令列表的文件。文件如下所示
/typedef struct/b a
/^struct.*{/!b;:a;N
/}/!b a;p
s/\n//g
硬件部分检测结构何时结束;这是一个C解析问题,对于sed来说相当严重。你为什么要做这件可怕的事?这是个家庭作业问题。最终目标是让程序为c89编译,所以我必须更改结构声明。技术上没有,但我的教授告诉我们他的实现是用sed完成的。