1 char * fgets(char * s,int size,FILE * stream);
函数说明 fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。
返回值 gets()若成功则返回s指针,返回NULL则表示有错误发生。
范例 #include
main()
{
char s[80];
fputs(fgets(s,80,stdin),stdout);
}
执行 this is a test /*输入*/
this is a test /*输出*/
注意 fgets(s,BUFSIZ,stdin)我一直没有办法结束它;
2
表头文件 #include
定义函数 void *calloc(size_t nmemb,size_t size);
函数说明 calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。这和使用下列的方式效果相同:malloc(nmemb*size);不过,在利用calloc()配置内存时会将内存内容初始化为0。
返回值 若配置成功则返回一指针,失败则返回NULL。
范例 /* 动态配置10个struct test 空间*/
#include
struct test
{
int a[10];
char b[20];
}
main()
{
struct test *ptr=calloc(10,sizeof(struct test));
}
注意 char** lines=calloc(maxline,sizeof(char*));
一个关于qsort的例子,注意cmp参数如何
#include
#include
#include
#include
#define Maxline 5
int cmp(const void*,const void*);
int main()
{
int i,nlines;
char** lines;
char s[BUFSIZ];
int maxline=Maxline;
lines=calloc(maxline,sizeof(char*));
for (nlines=0;fgets(s,BUFSIZ,stdin);nlines++)
{
if (nlines==Maxline)
{
char** tlines;
maxline+=Maxline;
tlines=realloc(lines,maxline);
assert(tlines);
lines=tlines;
}
lines[nlines]=malloc(strlen(s)+1);
assert(lines[nlines]);
strcpy(lines[nlines],s);
if(nlines>=3) break;
}
qsort(lines,nlines,sizeof(lines[0]),cmp);
for (i=0;i
fputs(lines[i],stdout);
fflush(stdout);
assert(!ferror(stdout));
free(lines[i]);
}
free(lines);
return 0;
}
int cmp(const void* p1,const void* p2)
{
const char* sp1=*(const char**)p1;
const char* sp2=*(const char**)p2;
return(strcmp(sp1,sp2));
}