/*
**读取一行文本并输出
*/
char input[1000];
while(gets(input)!=NULL){
printf("input:%s\n",input);
}
gets函数从标准输入读取一行并把它存储作为参数传给它的数组中,一行输入由一串字符组成,以一个换行符结尾。gets函数丢弃换行符,并在它的末尾存储一个NUL字节(NUL字节是指字节模式全为0的字节,类似"\0")。然后gets函数返回一个非NULL值,表示该行已经成功读取。(NUL是ASCII中'\0'字符的名字,它的字节模式全为0.NULL值的是一个其值为0的指针
c语言中,不存在这string这样的字符串,c里面的字符串就是一窜以NUL字符结尾的字符 。尽管NUL作为字符串终止符,但它并不是作为字符串的一部分。如”hello“在内存中占6个字节,按顺序分别是h、e、l、l、o。
print函数中的参数如下:
%d 以十进制打印一个整形值
%o 以八进制打印一个整形值
%x 以十六进制打印一个整形值
%g 打印一个浮点值
%c 打印一个字符
%s 打印一个字符串
\n 换行
/*
**读取并存储数值
*/
int a,index=0;
while(scanf("%d",&num)==1)
index++;
scanf函数从标准输入读取字符并根据格式字符串对它进行转换--类似于printf的逆操作。scanf第一个参数为格式字符串,用于描述输入的类型,其余的为存储输入数据的变量。但必须注意一下几点:
第一,由于scanf的原理,所有的变量必须加上一个"&"的符号,(数组参数除外(如果确实想加,也可以),但是如果指定了是数组的某个元素,如a[5],则必须加上"&"符号,);
第二,要注意一下格式码。它与printf极为相似但又不同,下面列出了一些常用的格式码。注意前5个用于读取标量值,需要用到“&”符号。使用所有的格式码(除了%c以外),输入之前的空白(空格、制表符、换行符)会被跳过,值后面的空白表示该值的结束。因此,用%s格式码去输入字符串时,中间不能包括空白。
格式 含义 变量类型
%d 读取一个整型值 int
%ld 读取一个长整型值 long
%f 读取一个实型值(浮点数) float
%lf 读取一个双精度实型值 double
%c 读取一个字符 char
%s 读取一个字符串 char数组
当上面的scanf成功读取了一个整型之后,便会返回1,否则(如文件读取完或者输入的是字符不能转为整型)返回0。
当scanf函数对输入值进行转换的时候,它只读取需要读取的字符。这样,该输入行包含了最后一个值之后的其余部分然在输入流里面等待下一次的读取。
if(num%==0){
puts("ends");
}
puts是gets函数的输出版本,他把指定的字符串写到标准输出并在末尾添上一个换行符。
int ch;
if((ch==getchar())!=EOF&&ch!='\n'){
index++;
}
或者
ch=getchar();
while(ch!=EOF&&ch!='\n'){
ch=getchar();
index++;
}
首先getchar从标准输入读取一个字符并返回它的值给ch,如果输入中不存在任何字符,函数就会返回常量EOF,用于提示文件的结尾。
注意,ch为整型不是char,而我们要用它来读取字符。只是因为EOF是一个整型的值,它的位数比字符类型还要多,把ch声明为整型可以防止输入读取的字符意外被解释为EOF。但同时,也意味着接受字符的ch必须足够大,足以容纳EOF,这就是ch为int型的原因。
putchar('n');
putchar('e');
putchar('w');
putchar接受一个字符(只能是一个字符)并打印。