1 第一章
C标准库中几个常用的IO函数
int puts(void *str):
从str中提取字符直到遇到第一个'\0'为止,将这些字符串加上'\n'后发送给stdout。
int main(void)
{
char input[100];
input[0] = 'a';
input[1] = 'b';
input[2] = 'c';
input[3] = '\0';
input[4] = 'd';
puts(input);
return 0;
}
会返回 abc
char* gets(void *str):
从stdin中读取一行,直到遇见换行符为止,gets函数会将换行符'\n'替换为'\0'写入到传入的指针中;
请注意gets函数在将字符写入数组中时并不会检查数组是否越界,如果字符个数大于数组长度,这可能会带来一些不可预料的后果,超出的部分会写入到内存中数组之后的位置,这个位置有可能是下一个指令的地址,有可能是其他局部变量,修改他们会带来麻烦,所以谨慎使用。
c11中废弃了gets函数,可以用更安全的fgets来实现同样的功能。
int scanf(const char *restrict, ...):
scanf用法类似于printf,不同的是出第一个参数之外,其它参数表示从stdin写入的地址,应当是一个指针类型。
scanf("%d",&num[1]),他会跳过前面的空格,直到遇到第一个空格表示结束,将结果存处在对应的地址上 。
char* strncpy(char *dest,char *src,int n):
从源指针src复制n个元素到dest中 。
char*strcpy(char *dest,char *src):
将源指针src中的字符包括'\0'复制到dest中,此函数并不会检查dest是否能够容纳得下,因此需要保证dest足够大 。
int getchar(void):
从标准输入stdin中获取一个字符,常规来说返回值应该是char,事实上返回值是int类型是为了保证读取到的EOF结束符也能正常返回,EOF在stdio.h被定义,值为-1。
#ifndef EOF
# define EOF (-1)
#endif
这里应当注意不同的平台char类型所表示的范围不同,ARM体系,char是不带符号的,取值范围0到255。而一些其他的平台char的范围就可能是-128到127。因此考虑兼容性,就不能把EOF赋值给一个char类型,这可能会导致错误,我觉得getchar应该是考虑到这个原因才这样设计的。
标签:EOF,int,第一章,char,dest,input,指针 From: https://www.cnblogs.com/ljq245055804/p/17350302.html