msmset
1 /*把buffer所指内存区域的前count个字节设置成字符c,返回buffer的指针*/ 2 #include <string.h> 3 extern void *meeset(void *buffer,int c,int count);
gets
1 /*gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。*/ 2 #include <stdio.h> 3 char * gets ( char * str );
fgets
1 /*从文件结构体指针stream中读取数据,每次读取一行。 2 读取的数据保存在buf指向的字符数组中, 3 每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'), 4 如果文件中的该行,不足bufsize个字符,则读完该行就结束。 5 如若该行(包括最后一个换行符)的字符数超过bufsize-1, 6 则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾, 7 对fgets的下一次调用会继续读该行。函数成功将返回buf,失败或读到文件结尾返回NULL。 8 因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。*/ 9 10 char *fgets(char *buf, int bufsize, FILE *stream); 11 12 /* 13 *buf: 字符型指针,指向用来存储所得数据的地址。 14 bufsize: 整型数据,指明存储数据的大小。 15 *stream: 文件结构体指针,将要读取的文件流。 16 */
字符串逆置且单词不逆置
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <ctype.h> 4 #include <string.h> 5 6 void word_rev(char*s ,int begin,int end); 7 void reverse(char* s); 8 int main(int argc,char* argv[]) 9 { 10 char s[] = "asdfi am a student"; 11 reverse(s); 12 return 0; 13 } 14 15 void reverse(char* s) 16 { 17 int len = strlen(s); 18 int i; 19 int j = 0; 20 char a[len]; 21 for(i = len-1;i>=0;i--) 22 { 23 a[j++] = s[i]; 24 } 25 for(i=0;i<len;i++) 26 { 27 if((isalpha(s[i+1])&&s[i] == ' ')) 28 { 29 for(j=i;isalpha(s[i]);j++) 30 ; 31 word_rev(s,i,j); 32 } 33 } 34 if(isalpha(s[0])) 35 { 36 for(i=0,j=0;isalpha(s[i]);i++,j++) 37 { 38 ; 39 } 40 word_rev(s,0,j); 41 } 42 puts(s); 43 } 44 45 void word_rev(char* s,int begin,int end) 46 { 47 int len = strlen(s); 48 int i,j,t; 49 for(i = begin,j = end-1;i<j;i++,j--) 50 { 51 t = s[i]; 52 s[i] = s[j]; 53 s[j] = t; 54 } 55 }