1.C语言如何输入EOF
在C语言运行过程中,有时需要在终端手动输入EOF,其输入方法与操作系统有关。
1 windows系统。
实际上输入是在dos下面执行的,也就是运行时的那个黑底窗口。在windows下输入EOF需要输入CTRL+Z。
2 Linux/Unix/Mac操作系统。
在这类操作系统下,要输入EOF需要输入CTRL+D。
以上输入操作,均需要先按下CTRL键,不要抬起,再按下对应的D或Z键,抬起D或Z键,再抬起CTRL键。组合功能键的输入流程都是这样的。
在输入时,如键盘上有多个CTRL, 左右CTRL均可使用,没有区别。对于字母的输入,大小写也无关。
部分系统运行时,会不支持即时输入,这样在输入功能键后,还需要再输入回车来使系统可以接收到按键,此类现象多见于windows编译器。
如果系统支持按键回显,那么在输入成功后,会显示^Z或^D。
2.linux bash shell 中这句命令如何理解 cat > test << "eof"
cnbubble@DESKTOP-86FJGJ2:~$ cat >test << "eof"
> adkf
> alkd
> 23
> eof
cnbubble@DESKTOP-86FJGJ2:~$ cat test
adkf
alkd
23
cnbubble@DESKTOP-86FJGJ2:~$cat 打印内容
>;输出到文件,由于Cat没有输入打印文件,默认从标准输入获取内容,
最后 >> "eof" 是指直到出现eof字符时结束。
3.linux的Shel脚本l编程是做什么的
系统管理员用的
1 省心省力
你要创建几十个用户,给他们家目录,创建samba密码,你一个个创建会搞死人的,写个脚本,执行一遍就完了
2 自动工作
自动在晚上3点备份数据库,你不可能晚上爬起来开电脑连接到公司服务器上去操作吧,这个写个脚本加到cronjob 完事
3 文本分析
给你一个很大的文本,分析里面的邮件地址出现了多少次,你不可能一个个数吧,数一年都数不完,写个脚本几分钟就统计出来了,awk只需要一行,这也是腾讯的一个面试题
做linux sa不会这个是不现实的,不仅会,而且要精通,但是你只会这个 shell也不行,因为搞linux的还要求会其他的东西
4.C语言 EOF是什么
这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。比如,下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上。 int c;
while ((c = fgetc(fp)) != EOF) { putchar (c); }很自然地,我就以为,每个文件的结尾处,有一个叫做EOF的特殊字符,读取到这个字符,操作系统就认为文件结束了。但是,后来我发现,EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1。 #define EOF (-1)于是,我就困惑了。如果EOF是一个特殊字符,那么假定每个文本文件的结尾都有一个EOF(也就是-1),还是可以做到的,因为文本对应的ASCII码都是正值,不可能有负值。但是,二进制文件怎么办呢?怎么处理文件内部包含的-1呢?这个问题让我想了很久,后来查了资料才知道,在Linux系统之中,EOF根本不是一个字符,而是当系统读取到文件结尾,所返回的一个信号值(也就是-1)。至于系统怎么知道文件的结尾,资料上说是通过比较文件的长度。所以,处理文件可以写成下面这样: int c; while ((c = fgetc(fp)) != EOF) { do something }这样写有一个问题。fgetc()不仅是遇到文件结尾时返回EOF,而且当发生错误时,也会返回EOF。因此,C语言又提供了feof()函数,用来保证确实是到了文件结尾。上面的代码feof()版本的写法就是: int c; while (!feof(fp)) { c = fgetc(fp); do something; }但是,这样写也有问题。fgetc()读取文件的最后一个字符以后,C语言的feof()函数依然返回0,表明没有到达文件结尾;只有当fgetc()向后再读取一个字符(即越过最后一个字符),feof()才会返回一个非零值,表示到达文件结尾。所以,按照上面这样写法,如果一个文件含有n个字符,那么while循环的内部操作会运行n+1次。所以,最保险的写法是像下面这样: int c = fgetc(fp); while (c != EOF) { do something;
c = fgetc(fp); } if (feof(fp)) { printf("\n End of file reached."); } else { printf("\n Something went wrong."); }除了表示文件结尾,EOF还可以表示标准输入的结尾。 int c; while ((c = getchar()) != EOF) { putchar(c); }但是,标准输入与文件不一样,无法事先知道输入的长度,必须手动输入一个字符,表示到达EOF。Linux中,在新的一行的开头,按下Ctrl-D,就代表EOF(如果在一行的中间按下Ctrl-D,则表示输出"标准输入"的缓存区,所以这时必须按两次Ctrl-D);Windows中,Ctrl-Z表示EOF。(顺便提一句,Linux中按下Ctrl-Z,表示将该进程中断,在后台挂起,用fg命令可以重新切回到前台;按下Ctrl-C表示终止该进程。)那么,如果真的想输入Ctrl-D怎么办?这时必须先按下Ctrl-V,然后就可以输入Ctrl-D,系统就不会认为这是EOF信号。Ctrl-V表示按"字面含义"解读下一个输入,要是想按"字面含义"输入Ctrl-V,连续输入两次就行了。(完)
5.C语言编程中的EOF是什么
在计算机术语缩写通常为 EOF,在操作系统决定资料源无更多的资料可读取。
资料源通常称为档案或串流。 在 C语言,或更精确地说成 C标准函式库,档案存取或其它 I/O 功能可能传回等于象征符号值 (巨集) EOF 指示档案结束的情形发生。
实际上 EOF 的值通常为 -1,但它依系统有所不同。巨集 EOF 会在编译原始码前展开实际值给预处理器。
C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。
例如: #include cat 的创建、连接文件功能实例,如下 cat 有创建文件的功能,创建文件后,要以EOF或STOP结束; [root@localhost ~]# cat >linuxsir.org.txt >我来测试 cat 创建文件,并且为文件输入内容; 注:这是为linuxsir.org.txt文件输入内容; >北南南北 测试; 注:这是为linuxsir.org.txt文件输入内容; >EOF 注:退出编辑状态; cat 还有向已存在的文件追加内容的功能; [root@localhost ~]# cat linuxsir.txt 注:查看已存在的文件linuxsir.txt 内容; I am BeiNanNanBei From LinuxSir.Org . 注:内容行 我正在为cat命令写文档 [root@localhost ~]# cat >>linuxsir.txt >我来测试cat向文档追加内容的功能; 注:这是追回的内容 >OK? >OK~ >北南 呈上 >EOF 注:以EOF退出; [root@localhost ~]# cat linuxsir.txt 注:查看文件内容,看是否追回成功。 I am BeiNanNanBei From LinuxSir.Org . 我正在为cat命令写文档 我来测试cat向文档追加内容的功能; OK~ 转载请注明出处育才学习网 » linuxshel中怎么写eof6.在LINUX中如何用cat创建一个文件