【发布时间】:2017-02-20 02:05:18
【问题描述】:
我是初学者,我已经编写了代码:
#include<stdio.h>
char c;
char a[100]={0};
int i;
int main(void)
{
while(1)
{
i=0;
while(1){
if((c=getchar())!='\n'){
a[i]=c;
i++;
} else {
break;
}
}
printf("%s\n",a);
}
return 0;
}
现在我想添加一个中断语句,当我键入 q 时,程序将中断。所以我的新程序是:
#include<stdio.h>
char c;
char a[100]={0};
int i;
int main(void)
{
while(1)
{
i=0;
while(1){
if((c=getchar())!='\n'){
a[i]=c;
i++;
} else {
break;
}
}
printf("%s\n",a);
if(getchar()=='q')break; /*i added this*/
}
return 0;
}
我知道因为getchar() 冲突代码不正确,我该怎么办,添加type q break 命令。非常感谢。
【问题讨论】:
-
从学习如何避免在不需要时使用
global variables开始 -
@SeekAddo 全局是什么意思?这些变量具有内部链接,因此它们对其他模块不可见...您介意告诉我在the C standard 的哪个位置可以找到有关全局变量 的更多信息吗?我想学习如何声明和使用它们...
-
@Seb 全局变量可以从应用程序的任何地方访问。有些人可能认为它们是不好的做法,因为变量可以被另一个函数修改。
char c;char a[100]={0};int i;都在main之外定义。此应用程序中的任何功能都可以访问它们,这是一种不好的做法 -
@SeekAddo 可以从应用程序内的anywhere 访问这些全局变量吗?在他们的声明之前怎么样,例如
char return_c(void) { return c; }紧随其后的是char c;... 这可能吗?可以从其他翻译单元访问这些全局变量吗?你了解什么是翻译单元吗? -
你自己说过,globals anywhere 都可以访问...但是你可以从我的代码中看到,
c无法访问anywhere 尽管是在函数之外声明的,因为它不能被声明为 before 的函数访问!所以这些变量都不是全局变量,C 也没有全局变量。另一个例子是翻译单元;一旦您了解了如何使用链接器,您会发现使用链接器链接的模块无法访问这些变量...进一步证明 C 没有 全局变量。 但最终的证明是在我之前链接到的 C 标准中...
标签: c while-loop break getchar