我正在阅读K&R关于C的书,我到了这一部分,输出的内容是您输入的换行符数量,我想这样做,以便打印出与键入的换行符数量相对应的每个数字正在读取行。仅在按F6或CTRL + Z(EOF)后才输出nl的值。有人可以向我解释为什么吗?
class SomeDjangoView(TemplateView):
template_name = 'template_and_that.html'
def get(self, request):
clever_async_function()
return render(request, self.template_name)
# Some other file
def clever_async_function():
with ThreadPoolExecutor(max_workers=4) as executor:
executor.map(long_running_task, iterable_models_or_similar)
答案 0 :(得分:1)
您忘记了一些括号。这是您的代码当前执行的操作:
int main(){
int c, nl = 0;
while ((c = getchar()) != EOF){
if (c == '\n'){
++nl;
}
}
printf("%d\n", nl);
}
根据缩进,这可能是您想要做的:
int main(){
int c, nl = 0;
while ((c = getchar()) != EOF){
if (c == '\n'){
++nl;
printf("%d\n", nl);
}
}
}
在C语言中,空格通常被忽略。如果要在一个块中一起运行多个语句,则需要用括号{}
答案 1 :(得分:0)
仅当字符是EOF字符时,while循环才会结束。 EOF是一个特殊字符,代表程序正在读取的文件结尾。由于您是从控制台读取的,因此控制台本身就是您正在读取的文件,但是它没有尽头。但是,在您的系统中,您可以通过键入F6或CTRL + Z
将EOF字符发送到控制台。相反,如果要在键入时打印行数,则应按以下方式更改代码:
int main(){
int c, nl = 0;
while ((c = getchar()) != EOF){
if (c == '\n'){
++nl;
printf("%d\n", nl);
}
}
}