scanf()函数:
scanf()是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量中;
函数原型: int scanf( const char *format, ... );
返回值:
如:scanf("%d,%d", &a, &b);
#include <stdio.h>
int main()
{
char str[50];
scanf("%49[^\n]",str);
printf("%s\n",str);
return 0;
}
输入:I love you
输出:I
gets()函数:
原型:char*gets(char*buffer);
从stdio流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。
例:
参数:
memset函数:
函数原型:void *memset(void *s, int ch, size_t n);
函数解释:将 s 中前 n 个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
因为第一个程序的数组a是字符型的,字符型占据内存大小是1Byte,而memset函数也是以字节为单位进行赋值的,所以你输出没有问题。而第二个程序a是整型的,使用 memset还是按字节赋值,这样赋值完以后,每个数组元素的值实际上是0x01010101即十进制的16843009。
如果用memset(a,1,20),(实际上与memset(a,1,5*sizeof(int))结果是一样的),就是对a指向的内存的20个字节进行赋值,每个都用ASCⅡ为1的字符去填充,转为二进制后,1就是00000001,占一个字节。一个INT元素是4字节,合一起就是00000001000000010000000100000001,就等于16843009,就完成了对一个INT元素的赋值了