K&R 练习 1-23
K&R exercise 1-23
我有两个与标题练习相关的问题,来自 The C Programming Language。我敢肯定他们之前都已经回答过,所以无论是直接回答还是 link 到之前的 post(我找不到)都将不胜感激。
练习本身是编写一个从 C 代码中删除注释的 C 程序。
我看过很多这个程序的例子,但我不知道如何测试它。他们都使用 getchar() 来 "acquire" 他们要编辑的代码,但我不知道如何告诉程序读取另一个文件,而不是等待命令行的输入.我尝试了“./a.out program_to_edit.c”,但是没有用。或者,如果有一种简单的方法可以像其他语言一样用文本块(而不是一次一个字符)创建一个字符串,那也可以。
这个问题比较笼统。在使用 getchar() 读取 C 源代码时,我对转义字符的工作方式感到困惑。如果我在 TextEdit 中查看 .c 文件,我会看到“\t”,但如果我编译它并打印出来,它会以制表符的形式出现。这是否意味着 .c 文件包含 '\\' 和 't' 并且编译器将它们组合在一起,还是完全不同?如果我使用 getchar() return 读取该文件,它会发生什么?
谢谢。
对于你问题的第一部分,你读了一个类似这样的文件。
您应该在 "The Book."
中找到这方面的示例
#include <stdio.h>
int main(void)
{
FILE *fp = fopen("Some_file.txt","rt");
if (fp != NULL)
{
int c = fgetc(fp);
while (c != EOF)
{
/* Do something with c */
}
fclose(fp);
}
else
{
printf("Can't open the file?\n");
}
return 0;
}
对于问题的第二部分,反斜杠指示反斜杠和下一个字符被替换。
- /t 被 (char) 9 替换,这是 ascii 制表符。
- /a 被 (char) 7 取代,这是一个可听到的铃声
- /n 在 unix 系统上被 (char) 10 取代,在 dos 系统上被 (char)13, (char) 10 取代。
重读一些内容。
它在 "The Book."
欢迎来到 Stack Overflow。
- 重定向标准输入:
./a.out < program_to_edit
.
- 转义表示仅存在于源代码中。编译器将它们转换为适当的字符。
我有两个与标题练习相关的问题,来自 The C Programming Language。我敢肯定他们之前都已经回答过,所以无论是直接回答还是 link 到之前的 post(我找不到)都将不胜感激。
练习本身是编写一个从 C 代码中删除注释的 C 程序。
我看过很多这个程序的例子,但我不知道如何测试它。他们都使用 getchar() 来 "acquire" 他们要编辑的代码,但我不知道如何告诉程序读取另一个文件,而不是等待命令行的输入.我尝试了“./a.out program_to_edit.c”,但是没有用。或者,如果有一种简单的方法可以像其他语言一样用文本块(而不是一次一个字符)创建一个字符串,那也可以。
这个问题比较笼统。在使用 getchar() 读取 C 源代码时,我对转义字符的工作方式感到困惑。如果我在 TextEdit 中查看 .c 文件,我会看到“\t”,但如果我编译它并打印出来,它会以制表符的形式出现。这是否意味着 .c 文件包含 '\\' 和 't' 并且编译器将它们组合在一起,还是完全不同?如果我使用 getchar() return 读取该文件,它会发生什么?
谢谢。
对于你问题的第一部分,你读了一个类似这样的文件。 您应该在 "The Book."
中找到这方面的示例#include <stdio.h>
int main(void)
{
FILE *fp = fopen("Some_file.txt","rt");
if (fp != NULL)
{
int c = fgetc(fp);
while (c != EOF)
{
/* Do something with c */
}
fclose(fp);
}
else
{
printf("Can't open the file?\n");
}
return 0;
}
对于问题的第二部分,反斜杠指示反斜杠和下一个字符被替换。
- /t 被 (char) 9 替换,这是 ascii 制表符。
- /a 被 (char) 7 取代,这是一个可听到的铃声
- /n 在 unix 系统上被 (char) 10 取代,在 dos 系统上被 (char)13, (char) 10 取代。
重读一些内容。 它在 "The Book."
欢迎来到 Stack Overflow。
- 重定向标准输入:
./a.out < program_to_edit
. - 转义表示仅存在于源代码中。编译器将它们转换为适当的字符。