有关EOF
来源:互联网 发布:手机淘宝体验中心在哪 编辑:程序博客网 时间:2024/06/03 21:40
先说EOF(end of file)的作用:文件的结尾
表示一般常量-1
表示standerd input 的结尾
(while (scanf(“%s”,a))!=EOF))
win环境下可以使用Ctrl+z来模拟EOF也就是结束
再说说与这个类似的NULL:表示0
同时也表示空 一样可以用于stdin的结尾
使用ctrl+z可以结束
首先先提出一个问题 输入若干个字符串 每个字符串长度不超过一百 要求把首字母大写。
下面是我的第一个设想
#include <stdio.h>int main(){ char a[101]; int n; printf("input a string :\n"); scanf("%s",a); a[0]=a[0]-32; puts(a);//遇到空格自动结束 return 0;}
结果是:
input a string:i am a student//这是输入 I//这是输出的字符串
那么是什么导致了这种情况的发生,我查询了%s 的用法,也作出了验证
#include <stdio.h>int main(){ char a[100]="in afjaskldfj "; puts(a); printf("%s\n",a);//%s 是可以输出空格的 puts(a); return 0;}
也就是说这个错误与%s 无关,那么就应该是a[0]的问题了。
#include <stdio.h>int main(){ char a[101]; int n; printf("input a string :\n"); scanf("%s",a); //a[0]=a[0]-32; printf("%s",a);//遇到空格自动结束 return 0;}
我把a[0]去掉,依旧无法输出字符串,还是只输出了开头的一个字母。
我发现了,只有一开始就定义好的字符串可以这样,使用%s来直接输出,而从键盘输入的无法使用。
这就是一开始的问题所在!!!
那么新的问题来了 –为什么可以使用scanf("%s",a);
printf(“%s”,a);`输出呢????
输入,却无法使用
好吧现在发个问题?
解决好了,在下一步解决。
OK 上面的问题成功解决了
%s在读取字符串的时候 遇到空格就停止了 把空格视为结束符 但一样可以解决这个问题
把下面的代码中gets()换成scanf() 并且在输出的时候在%s后面加上一个空格就可以了。
这是使用gets()函数来解决的 ,gets函数可以输入空格,代码如下
#include <stdio.h>int main(){ char a[101],*y; while(gets(a)!=NULL)//不能使用scanf { y=a; *y=toupper(*y); for(y=a+1;*y!='\0';y++) { if(*(y-1)==' ') { *y=toupper(*y); } } printf("%s",a); } return 0; }
- 有关EOF
- 有关getchar()和EOF
- eof ()
- EOF
- eof
- EOF
- EOF
- EOF
- EOF
- EOF
- EOF
- eof
- EOF
- EOF
- EOF
- EOF
- EOF
- <<EOF
- 【hpuoj】防ak问题
- LintCode - 365.二进制中有多少个1
- AIDL基础再接触
- MFC 判断Windows某一进程是否在运行以及处理
- 连接池笔记
- 有关EOF
- LA4487 Exclusive-OR
- @JoinColumn 详解
- Spring Cache的原理和简单实现
- 亲密数
- 欢迎使用CSDN-markdown编辑器
- as3效率优化
- MFC匹配字符获取字符串
- IOS-OC 帮你解决关闭键盘的所有烦恼