c语言换行为什么输出两行空行?
发布网友
发布时间:2022-04-29 01:21
我来回答
共4个回答
热心网友
时间:2022-06-27 10:51
比如你输入 5 + 回车
本来是想 scanf 一个字符 '5'
但程序在读入5以后,把你输入的回车也读进去了
就是说“ 5 + 回车 ”这样一次输入,读入了2个字符,执行了2次循环
第二次循环中字符 '\n' 作为 %c 被输出了,所以你会感觉多了一行
scanf就是这个特点,修改一下程序便可解决:
#include<stdio.h>
int main(){
char a;
while(scanf("%c",&a))
{
if(a=='#') break;
else
{
if(a!='\n') printf("%c\n",a);
}
}
return 0;
}
热心网友
时间:2022-06-27 10:51
这是误解,问题可能出在用gets()或fgets()读入的字符串输出的时候。比如
char s[100]; // 声明一个字符数组
gets(s); // 用 I like C/C++ language. 作为响应,此时的输入完字符串的新行符也被读入
puts(s); // puts()会在显示完字符串后,添加一个新行符。也就是说有两个新行符被输出。
热心网友
时间:2022-06-27 10:51
先用w方式重新写一下文件 因为添加的东西可能比较乱
然后主意 写文件的时候不要添加“\n” 添加这个就会导致feof(fp) 识别不了 就重新读最后一行 所以 只要删了“\n"就0k了
热心网友
时间:2022-06-27 10:52
#include<stdio.h>
int main(){
char a;
while(scanf("%c",&a)){
if(a=='#')
break;
else{
printf("%c\n",a);
getchar(); //添加getchar()获得末尾的换行
}
}
return 0;
}