C代码缩进练习
Exercise of indentation of C code
我正在尝试改进 this C code 的缩进。我对用于缩进的确切规则并不挑剔,我只关心它看起来或多或少是标准的!
有趣的是,代码在我的浏览器上看起来不错,但下载后很明显缩进是由 "tabs" 和 "spaces" 混合引起的,并且在 SublimeText2 和 TextWrangler 上看起来都很丑。
我试过了
indent file.c
但它 returns 一长串错误似乎与字符串中存在反斜杠后跟换行符(如果斜杠需要转义则为“\\n”或“\\\n”)有关.所以我试图删除那些
tr "\\n" " " < file.c > newfile.c
但我没有完全达到我的目标。
当我下载文件时,它有 CRLF(DOS 或 Windows 风格)行尾。当你 运行 通过 Unix indent
时,它不喜欢反斜杠后跟 CR 而不是 NL(又名 LF)。如果您替换 CRLF 行结尾,它应该可以按 indent
.
格式化
问题是 indent
期望反斜杠后跟换行符,但 CR 不是换行符。
如果您有 dos2unix
或 dtou
命令,请使用它。如果不是,请使用 tr
:
tr -d '5' < sfs_code.c > x31; mv x31 sfs_code.c
您还可以通过将制表符替换为 8 个空格来进行改进。同样,可能还有其他工具可以完成这项工作,但经典工具是 pr
:
pr -e8 -l1 -t sfs_code.c > x31; mv x31 sfs_code.c
用于将字符串拆分成多行的反斜杠换行序列是非常 1980 年代风格的编码。由于 C89/C90 标准引入了字符串连接,因此没有必要(尽管它仍然被认为是合法的 C)。
6781 行,这是一个相当大的文件。它包括许多其他源文件(.c
扩展名)和一些 headers。我用 uncrustify
戳了一下,没问题;删除 CR 字符后,indent
也很好。
(我使用自己的 ule
— Uniform Line Endings — 程序来进行转换。这是许多不同的可能技术之一。)
请注意,您的 tr
命令失败,因为它将反斜杠和换行符都映射为空白(并保持 CR 字符不变),这不是您想要的。 tr
命令映射单个字符;它不适合映射您想要和需要的字符组合。
我正在尝试改进 this C code 的缩进。我对用于缩进的确切规则并不挑剔,我只关心它看起来或多或少是标准的!
有趣的是,代码在我的浏览器上看起来不错,但下载后很明显缩进是由 "tabs" 和 "spaces" 混合引起的,并且在 SublimeText2 和 TextWrangler 上看起来都很丑。
我试过了
indent file.c
但它 returns 一长串错误似乎与字符串中存在反斜杠后跟换行符(如果斜杠需要转义则为“\\n”或“\\\n”)有关.所以我试图删除那些
tr "\\n" " " < file.c > newfile.c
但我没有完全达到我的目标。
当我下载文件时,它有 CRLF(DOS 或 Windows 风格)行尾。当你 运行 通过 Unix indent
时,它不喜欢反斜杠后跟 CR 而不是 NL(又名 LF)。如果您替换 CRLF 行结尾,它应该可以按 indent
.
问题是 indent
期望反斜杠后跟换行符,但 CR 不是换行符。
如果您有 dos2unix
或 dtou
命令,请使用它。如果不是,请使用 tr
:
tr -d '5' < sfs_code.c > x31; mv x31 sfs_code.c
您还可以通过将制表符替换为 8 个空格来进行改进。同样,可能还有其他工具可以完成这项工作,但经典工具是 pr
:
pr -e8 -l1 -t sfs_code.c > x31; mv x31 sfs_code.c
用于将字符串拆分成多行的反斜杠换行序列是非常 1980 年代风格的编码。由于 C89/C90 标准引入了字符串连接,因此没有必要(尽管它仍然被认为是合法的 C)。
6781 行,这是一个相当大的文件。它包括许多其他源文件(.c
扩展名)和一些 headers。我用 uncrustify
戳了一下,没问题;删除 CR 字符后,indent
也很好。
(我使用自己的 ule
— Uniform Line Endings — 程序来进行转换。这是许多不同的可能技术之一。)
请注意,您的 tr
命令失败,因为它将反斜杠和换行符都映射为空白(并保持 CR 字符不变),这不是您想要的。 tr
命令映射单个字符;它不适合映射您想要和需要的字符组合。