C语言中从键盘输入字符串时的一些问题
1.scanf()
scanf()在输入字符串时有很大的弊端, 例如:
1). scanf()在从键盘读入字符时并不会根据所定义的字符数组的大小来控制读入多少个..., 而是从scanf( ) 中传入的地址开始一直访问下一个元素的内存 , 碰见空格符或者回车符时才停止读入并存入结束符’\0’ , 这就有可能造成了一个在C中非常严重的问题 , 访问非法内存 ....‘\n’才停止读入并自动加上 ‘\0’,也存在和scanf()一样的访问非法内存的可能 ....str中
其中n是要求得到的字符个数 , 但实际上只会读入(n – 1)个,在最后加一个’\0’ ....printf("str2为:\n%s\n", str2);
system("pause");
}
如图, 即可以输入空格, 也不会越界 , 也没有从缓存区读取字符存入字符数组的问题
小结 :
在C语言中输入一个字符串时应该根据实际情况