问题在于你对空行的定义。
例如,你认为 "\t \t \n" -- “制表符,空格符,制表符,空格符,新行符”是空行,
你可以:
#include<stdioh>
int main(){
char s[80];
int flag=1,i;
fgets(s,80,stdin); // 读入一行
printf("%s -- length=%d\n",s,strlen(s));
for (i=0;i<strlen(s);i++) {
if (0xff & s[i] > 0x20) {flag=0;break;}; // 如果 ASCII 值大于空白符号 flag=0
}
if (flag==1) printf("blank line\n");else printf("not a blank line\n"); // 根据flag=1,0 判断是否 空行。
return 0;
}
for(j = 0;stu[i]name[j-1]!=',';j++) stu[i]name[j] = getchar();/首先这里stu[i]name[j-1]第一次取值时取得是stu[i]name[-1]/
比如你输入 5 + 回车
本来是想 scanf 一个字符 '5'
但程序在读入5以后,把你输入的回车也读进去了
就是说“ 5 + 回车 ”这样一次输入,读入了2个字符,执行了2次循环
第二次循环中字符 '\n' 作为 %c 被输出了,所以你会感觉多了一行
scanf就是这个特点,修改一下程序便可解决:
#include<stdioh>
int main(){
char a;
while(scanf("%c",&a))
{
if(a=='#') break;
else
{
if(a!='\n') printf("%c\n",a);
}
}
return 0;
}
你的意思是按键盘上enter键结束么?
回车+换行 = ENTER 分别对应ASCII码的0xd和0xa
>
以上就是关于c语言,在windows下,读取文件中一空行全部的内容,包括:c语言,在windows下,读取文件中一空行、我写的一个C语言程序,问题是在输入完之后输出的时候,总是出现一个空行,这是怎么回事、c语言换行为什么输出两行空行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)