c语言换行为什么输出两行空行?
程序如下:#include<stdio.h>intmain(){chara;while(scanf("%c",&a)){if(a=='#')break;else{prin...
程序如下:
#include<stdio.h>
int main(){
char a;
while(scanf("%c",&a)){
if(a=='#')
break;
else{
printf("%c\n",a);
}
}
return 0;
}
若没有换行符则不换行,可是加上后输出两行空行。高手指教下~~ 展开
#include<stdio.h>
int main(){
char a;
while(scanf("%c",&a)){
if(a=='#')
break;
else{
printf("%c\n",a);
}
}
return 0;
}
若没有换行符则不换行,可是加上后输出两行空行。高手指教下~~ 展开
4个回答
展开全部
比如你输入 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;
}
本来是想 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;
}
展开全部
这是误解,问题可能出在用gets()或fgets()读入的字符串输出的时候。比如
char s[100]; // 声明一个字符数组
gets(s); // 用 I like C/C++ language. 作为响应,此时的输入完字符串的新行符也被读入
puts(s); // puts()会在显示完字符串后,添加一个新行符。也就是说有两个新行符被输出。
char s[100]; // 声明一个字符数组
gets(s); // 用 I like C/C++ language. 作为响应,此时的输入完字符串的新行符也被读入
puts(s); // puts()会在显示完字符串后,添加一个新行符。也就是说有两个新行符被输出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先用w方式重新写一下文件 因为添加的东西可能比较乱
然后主意 写文件的时候不要添加“\n” 添加这个就会导致feof(fp) 识别不了 就重新读最后一行 所以 只要删了“\n"就0k了
然后主意 写文件的时候不要添加“\n” 添加这个就会导致feof(fp) 识别不了 就重新读最后一行 所以 只要删了“\n"就0k了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
int main(){
char a;
while(scanf("%c",&a)){
if(a=='#')
break;
else{
printf("%c\n",a);
getchar(); //添加getchar()获得末尾的换行
}
}
return 0;
}
int main(){
char a;
while(scanf("%c",&a)){
if(a=='#')
break;
else{
printf("%c\n",a);
getchar(); //添加getchar()获得末尾的换行
}
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询