Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Week1-C-chapter1 #1

Closed
r00tk1ts opened this issue May 16, 2019 · 3 comments
Closed

Week1-C-chapter1 #1

r00tk1ts opened this issue May 16, 2019 · 3 comments

Comments

@r00tk1ts
Copy link

  1. 练习1-6中“/这个时候不管输入任何值,都是1/”这一说法是错误的,Windows下Ctrl+Z代表EOF,Linux下则是Ctrl+D,输入该键则为0,否则为1。此外,要搞清楚EOF的意义:EOF不过是系统所维护的一个标志值(#define EOF (-1)),即-1。
  2. 练习1-8,不要使用int c1 = NULL;这种写法,虽然本身是合法的(本质上#define NULL (0)),但看起来很别扭,NULL一般只用来给指针型变量赋值或初始化,表示空指针。
    3.练习1-9、1-10中getchar(c)错误,getchar的标准函数签名是int getchar();,你这样写编译不会报错吗?程序执行的结果正确吗?
  3. 练习1-12,1-14程序逻辑就错了,你有测试过执行结果吗?
  4. 练习1-17 while ((len - getline(line, MAXLINE)) > 0)写错了吧,你是想写 while ((len = getline(line, MAXLINE)) > 0)吧,自己测试过结果吗?不能只保证编译通过啊。
  5. 练习1-19逻辑爆炸,重写,要求从命令行读字符串,并输出反转的字符串。
  6. 练习1-23答案没有问题,你这一句写得有问题: else if (c == '\'' || c == '""')这个'""'是什么?单引号引起来的只能是一个字符,转义字符只是写起来是两个字符,实际上本身表示一个字符,比如'表示',\t表示水平制表符
@sYstemk1t
Copy link
Owner

1-6明白了。
1-9,1-10,确实出问题了,我得getchar无论输入任何任何值,c得值一直都为0,编译过了,但是报了警告,初始化也有问题。
1-12和1-14只有到了字符串尾得时候执行了。
1-17已更正。
1-19已重写。

@r00tk1ts
Copy link
Author

以后记着写好的程序要自己运行测试通过,不能仅仅保证编译没错,实在找不到错误的,可以问我。

  1. 1-9、1-10 getchar()使用错误,不是getchar(c)而是c = getchar(),你在使用库函数前要先确认函数签名、参数及返回值的意义。你这样写在VS下会有C4087 W1警告,但gcc或是clang都会直接报错,这个取决于具体编译器的实现,可以参考C4087的官方说明:https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4087?view=vs-2019
  2. 把1-12和1-14重新写,这两个题很简单,不应该出现失误。

@sYstemk1t sYstemk1t reopened this Jun 9, 2019
@r00tk1ts r00tk1ts closed this as completed Sep 6, 2019
@r00tk1ts
Copy link
Author

r00tk1ts commented Sep 6, 2019

No activity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants