一.fgets函数
fgets不能进行格式化输出输入
代码如下
<span style="font-size:18px;">//fgets()
/*
文件操作相关函数
从键盘上接收一个字符串保存到数组中
scanf()缺点不能接收空格
gets(str)优点 :可以接收空格
*/
char str[10] ;
fgets(str,sizeof(str),stdin);//安全的,输入的字符串长度大于
puts(str);
//数组长度时,会将最后一个元素变为\0
/*
12345678abcd
12345678a
*/
for (int i = 0; i < 10 ; i++) {
printf("%d",str[i]);
}
/*
如果只输入8个第九个元素为空格
aaaaaaaa
aaaaaaaa
97 97 97 97 97 97 97 97 10 0
*/
int len =strlen(str);//不包含\0如果少就包含空格所以整体字符大一个
printf("%d\n",len);
if (str[len-1]=='\n') {
str[len-1]='\0';
}
for (int i = 0; i < 10 ; i++) {
printf("%d",str[i]);
}
printf("\n");
fputs(str,stdout);//不会自动换行
printf("\n");
puts(str);//带换行
/*
总结果:
aaa
aaa
97 97 97 10 0 95 -1 127 0 0 4
97 97 97 0 0 95 -1 127 0 0
aaa
*/
return 0;
</span>
2).const使用
const int Mx =10;
//常量是read only
int *p =&Mx;
*p = 100 ;//强制修饰常量
printf("Mx = %d , *p =%d\n",Mx,*p);
//Mx = 10, *p = 100
const int Mx =10;
//常量是read only
int *p =&Mx;
//intializingint * with an expression of type const int * discards qulifier
*p = 100 ;//强制修饰常量
printf("Mx = %d , *p =%d\n",Mx,*p);
//Mx = 10, *p = 100
//主要是看const和*的位置
//1.const修饰的指针变量指向可变 const在 *左边,
int a = 10 ;
int b = 20 ;
const int *p1 =&a;
p1=&b;//指向可以改变
*p1=1000;//read-onlyvariable is not assignable
//p1指向的变量的值是不能改变
const int *p2 =&b;
p2 =p ;
*p2=1000;//read-onlyvariable is not assignable
</