先添加什么' \ n'或者' \ 0'

时间:2014-09-20 15:56:15

标签: c string

当我使用字符串时。我有这样的事情:

#include <stdio.h> 
#define MAXLINE 1000 

main(){
int c; 
int i=0;
char s[MAXLINE]; 

while(c=(getchar()) !=EOF) 
{
s[i] = c; 
++i; 
} 
}

我想在写HELLO之类的内容然后点击enter来断行后,'\ n'首先添加到字符流或Null终止字符之后,即'\ 0 '

在视觉上哪一个正确表示正在发生的事情: (1)HELLO \ n \ 0 要么 (2)HELLO \ 0 \ n

2 个答案:

答案 0 :(得分:1)

编写代码的方式,s没有添加NUL字符。

由于您一次只读取输入的一个字符,如果您希望s被NUL终止,您需要自己添加NUL。

答案 1 :(得分:0)

重要的是,EOF不等同于换行符。循环将仅在 EOF ,即Ctrl + D(在linux中)终止。按下回车时不会终止。

getchar()是一个从标准输入中读取字符的函数。 EOF是C中用于表示已达到END OF FILE的特殊字符。

getchar()的返回值是:

1.成功时,返回字符读取(提升为int值) 2.返回类型为int以适应特殊值EOF,表示失败:
3.如果标准输入位于文件末尾,则该函数返回EOF并设置标准输出的eof指示符(feof)。 4.如果发生其他一些读取错误,该函数也会返回EOF,但会设置其错误指示符(ferror)。

因此每个换行符都将存储在String中,而不是终止循环。并且它不会在末尾添加任何NULL字符,因此不会有NULL字符。相反,它可以是hello \ n(其中&#39; \ n&#39;将在系统中存储为0x0A)