11.13.1
/编写并运行书本第11章11.13编程练习题目中的第1~3,6,7题。/
//1
include<stdio.h>
include<string.h>
void get_string(char *ch,int n);
int main(void)
{
static char ch[10];//为了自动初始化'\0'
get_string(ch,sizeof(ch));
return 0;
}
void get_string(char *ch,int n)
{
// printf("%d",sizeof(ch));//指针,只有八个字节,不符,我要的是它的长度,数组的,不是指针的
while(strlen(ch)<n-1)//strlen一般不受影响,因为不是由对象主导,而是看'\0'结束,sizeof是看对象的
{
// printf("%d",strlen(ch));
//fgets 会把换行符存入数组,和scanf(会把所有空白符丢到缓冲区),gets(会直接把换行符丢到缓冲区 )不同,
fgets(ch+strlen(ch),n-strlen(ch),stdin);//实际存入n-1个字符,读到第n个停止,最后一个不要,换成'\0'
//控制输入的情况,防止第每次输入过长
}
puts(ch);
}
/编写并运行书本第11章11.13编程练习题目中的第1~3,6,7题。/
//2
include<stdio.h>
include<string.h>
void get_string(char *ch,int n);
int main(void)
{
static char ch[10];
get_string(ch,sizeof(ch));
return 0;
}
void get_string(char *ch,int n)
{
while(strlen(ch)<n-1)
{
fgets(ch+strlen(ch),n-strlen(ch),stdin);
}
puts(ch);
}