1.字符串的输入
(1)int scanf( const char *format [,argument]… )
不做越界检查,遇见空格符就结束,此函数不安全
#include <stdio.h>
//测试1
int main(int argc, char *argv[])
{
//scanf() 不做越界检查
char str[5];
printf("请输入字符串str:");//输入abcdefg
scanf("%s", str);
printf("str = %s\n", str);//输出abcdefg,超过了str数组的大小
return 0;
}
//测试2
int main(int argc, char *argv[])
{
//scanf() 遇见空格符就结束
char str[5];
printf("请输入字符串str:");//输入a b c
scanf("%s", str);
printf("str = %s\n", str);//输出a
return 0;
}
(2)char *gets(char *str)
允许有空格,不做越界检查,此函数不安全
#include <stdio.h>
//测试
int main(int argc, char *argv[])
{
char buf[5];
printf("请输入字符串buf:");//a b c d e f g
gets(buf);
printf("buf = %s\n", buf);//输出a b c d e f g
return 0;
}
(3)char *fgets(char *str, int n, FILE *stream)
假如定义一个char buf[5]。 如果输入内容如果大于sizeof(buf) - 1, 只取sizeof(buf) - 1,放在buf所在的数组,数组最后一位存放’\0’
注意:如果输入的字符串长度没有超过 n–1,那么系统会将最后输入的换行符 ‘\n’ 保存进来
#include <stdio.h>
//测试1
int main(int argc, char *argv[])
{
//如果输入内容如果大于sizeof(buf) - 1, 只取sizeof(buf) - 1,放在buf所在的数组,最后一个是'\0'
char buf[5];
printf("请输入字符串:"); //abcdefg
fgets(buf, sizeof(buf), stdin); //从stdin(代表标准输入),读取内容
printf("buf = [%s]", buf);//输出[abcd]
return 0;
}
//测试2
int main(int argc, char *argv[])
{
//如果输入的字符串长度没有超过 n–1,那么系统会将最后输入的换行符 '\n' 保存进来
char buf[5];
printf("请输入字符串:"); //abc
fgets(buf, sizeof(buf), stdin); //从stdin(代表标准输入),读取内容
printf("buf = [%s]", buf);//输出[abc
//]
//可以看到把换行符也读取进来了,自动换行
return 0;
}
(4)int sscanf(const char *str, const char *format, …)
从字符串中以指定的格式提取内容
#include <