C/C++字符串输入方法比较(带回车不带回车输入) |
您所在的位置:网站首页 › 输入不定个数的字符串 › C/C++字符串输入方法比较(带回车不带回车输入) |
1.scanf
charstr[15]; scanf("%s",str); abc 123 1) 不读入空格和回车,从空格处结束 2) 输入字符串长度超过字符数组元素个数不报错 3) 当输入项为字符指针时,指针必须已指向确定的有足够空间的连续存储单元 4) 当为数组元素地址时,从此元素地址开始存放 printf("%s",地址值) 输出时遇到第一个'\0'为止 2.gets和puts函数开头必须stdio.h; Gets输入时包括空格符,遇到回车结束 Puts遇到第一个‘\0’结束,自动加入换行符 3.fgets而使用fgets函数时,只要第二个参数正好等于第一个参数传给它的数组的字节个数,那么fgets函数不会写出数组边界。所以,fgets函数是最好的选择。 fgets(...)读入文本行时的两种情况。 1).如果n大于一行的字符串长度,那么当读到字符串末尾的换行符时,fgets(..)会返回。并且在s的最后插入字符串结束标志'\0'。而s缓冲区剩余的位置不会再填充。 example: 123abc fgets(s,10,fp); 此时,读入七个字符,123abc\n,实际上还有最后的'\0',所以,strlen(s)=7;如果要去除末尾的\n,s[strlen(s)-1]='\0';便可。 2). 如果n小于等于一行的字符串的长度,那么读入n-1个字符,此时并没有读入\n因为并没有到行尾,同样在最后会插入'\0'. example: 123abc char s[5]; fgets(s,5,fp); 这时读入4个字符,123a,并没有换行符,所以strlen(s)=4. 4.cin使用空白(空格,制表符和换行符)来定字符串的界的 5.getline()读入整行数据,它使用回车键输入的换行符来确定输入结尾。 调用方法: cin.getline(str, len); 第一个参数str是用来存储输入行的数组名称,第二个参数len是要读取的字符数。 6.get()调用方法:cin.get(str, len); getline将丢弃换行符,而get()将换行符保留在输入序列里,但是字符串中并没有换行符。 使用cin.get()输入多行数据时,中间可以使用get()消除换行符。
int main() { char str1[30], str2[30]; cin.get(str1, 30); cin.get(); cin.get(str2, 30); cout |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |