user-0 提问: 学K&R的C程序设计语言第一章的这个程序就卡住了

回复:
user: user-1
content: 我这样跟你说吧，你按enter以为是‘\n’,编译器是没法是别的，所以只有按EOF程序才会停止，在控制台EOF是按ctrl+ z，你可以试试肯定就行了！

user: user-2
content: 引用 9 楼 episode1994 的回复:[quote=引用 7 楼 zhao4zhong1 的回复:] 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。  Dev C++调试不好用，趁早换。 谢谢回复，我现在还在c的入门阶段，理解语法等等，DEV是看网易云课堂上老师用的，老师贴的程序结构确实清楚了很多。。对于小白能不能推荐个IDE呢？VC每次都要新建工程。。[/quote] 你为什么不 建一个比如test工程，使用源文件test.cpp 以后每次写了比如MyProg123.cpp，将MyProg123.cpp拷贝覆盖test.cpp，重建test工程，运行test.exe调试，通过后将test.cpp拷贝覆盖MyProg123.cpp 呢？

user: user-3
content: 引用 9 楼 episode1994 的回复:[quote=引用 7 楼 zhao4zhong1 的回复:] 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。  Dev C++调试不好用，趁早换。 谢谢回复，我现在还在c的入门阶段，理解语法等等，DEV是看网易云课堂上老师用的，老师贴的程序结构确实清楚了很多。。对于小白能不能推荐个IDE呢？VC每次都要新建工程。。[/quote] CFree

user: user-0
content: 引用 7 楼 zhao4zhong1 的回复:代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。  Dev C++调试不好用，趁早换。 谢谢回复，我现在还在c的入门阶段，理解语法等等，DEV是看网易云课堂上老师用的，老师贴的程序结构确实清楚了很多。。对于小白能不能推荐个IDE呢？VC每次都要新建工程。。

user: user-0
content: 引用 3 楼 worldy 的回复:line都没有初始值，你拷贝什么？getchar（）函数。。。

user: user-4
content: 程序没有错误啊 你的问题需要理解这段话 A function may change the values of its parameters, but these changes cannot affect the values of the arguments.  On the other hand, it is possible to pass a pointer to an object, and the function may change the value of the object pointed to. A parameter declared to have array or function type is adjusted to have a pointer type as described in 6.9.1. 以及参考C99的6.7.5.3条款

user: user-5
content: line都没有初始值，你拷贝什么？

user: user-0
content: 引用 1 楼 mynameislu 的回复:Copy 函数接收的两个参数其实就是字符串的首地址了，可是这段程序在控制台里运行不出来啊，输入一段字符按运行什么都没有

user: user-6
content: Copy 函数接收的两个参数其实就是字符串的首地址了，

user: user-2
content: 不要使用 while (条件) 更不要使用 while (组合条件) 要使用 while (1) {  if (条件1) break;  //...  if (条件2) continue;  //...  if (条件3) return;  //... } 因为前两种写法在语言表达意思的层面上有二义性，只有第三种才忠实反映了程序流的实际情况。 典型如： 下面两段的语义都是当文件未结束时读字符 while (!feof(f)) {  a=fgetc(f);  //...  b=fgetc(f);//可能此时已经feof了！  //... } 而这样写就没有问题： while (1) {  a=fgetc(f);  if (feof(f)) break;  //...  b=fgetc(f);  if (feof(f)) break;  //... } 类似的例子还可以举很多。

user: user-2
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。  Dev C++调试不好用，趁早换。

user: user-0
content: 引用 4 楼 my_live_123 的回复:程序没有错误啊 你的问题需要理解这段话 A function may change the values of its parameters, but these changes cannot affect the values of the arguments.  On the other hand, it is possible to pass a pointer to an object, and the function may change the value of the object pointed to. A parameter declared to have array or function type is adjusted to have a pointer type as described in 6.9.1. 以及参考C99的6.7.5.3条款 关键是我用DEV C++和VC6.0 运行出来都是：输入一行字符串，按enter键就换行，继续输入还是这样，也没输出。。