@songpfei
2016-04-03T04:13:12.000000Z
字数 1383
阅读 9277
常用代码积累
gets函数的头文件是,原型如下:
char *gets(char *s);
gets从stdin中读入一行内容到s指定的buffer中,当遇到换行符或EOF时读取结束。读取成功时,返回s地址;失败时返回null。需要注意的是,gets会将行末尾的'\n'字符或EOF替换成'\0',这样,gets读取的内容中不包括'\n'字符。如果要获取读取字符串的长度,可以调用strlen函数获得。
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){int size = 1024;char* buff = (char*)malloc(size);// read lineswhile(NULL != gets(buff)){printf("Read line with len: %d\n", strlen(buff));printf("%s", buff);}// free bufffree(buff);}
fgets函数的头文件是,原型如下:
char *fgets(char *s, int size, FILE*stream);
fgets从stream中读取最多size-1大小的内容到s指定的buffer中,当遇到换行符或EOF时读取结束。读取成功时,返回s地址;失败时返回null。需要注意的是,fgets会在所读取的内容后面添加'\0',这样,fgets读取的内容中会包括行末尾的'\n'字符。如果要获取读取字符串的长度,可以调用strlen函数获得。
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){int size = 1024;char* buff = (char*)malloc(size);// read lineswhile(NULL != fgets(buff, size, stdin)){printf("Read line with len: %d\n", strlen(buff));printf("%s", buff);}// free bufffree(buff);}
需要注意的是fgets保留换行符'\n',而gets是从stdin输入,在读取字符串时会删除结尾的换行符'\n';
同样,fputs写入时不包括换行符,而puts在写入字符串时会在末尾添加一个换行符。
对于C++语言,如果使用C字符串的话,就采用cin.getline()函数,如果采用string型字符串的话,就采用全局函数getline(cin,n);
注意,这两个函数都不读入最后的换行符。
#include<string>#include<iostream>using namespace std;int main( ){string s;char str[256];getline(cin, s);cin.getline(str, sizeof(str));return 0;}
参考:http://www.cnblogs.com/xkfz007/archive/2012/08/02/2619446.html
非常值得看的博客:http://www.cnblogs.com/xkfz007/archive/2012/02/27/2363810.html