一些练习题

1. 句子反转

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 
 5 void reverse_word(char *string, int len);
 6 void reverse_sentense( char *string);
 7 
 8 int main(int argc, char* argv[])
 9 {    
10     char str[1000];
11     printf("please input reverse string:\n");
12     gets(str);
13     //scanf("%s",str);
14     printf("before = %s\n",str);
15     reverse_sentense(str);
16     printf("after = %s\n",str);
17     return 0;
18 }
19 
20 void reverse_sentense( char *string)
21 {
22     int temp = 0;
23     int j;
24     int i = strlen(string);
25     if((string==NULL)||(i>1000))
26         printf("input sentense string not valid\n");
27     for(j=0;j<i+1;j++)
28     {
29         if((*(string+j)==0x20)||(*(string+j)==0x0))
30         {
31             //printf("find pos j = %d, temp=%d\n",j,temp);
32             reverse_word((char*)string+temp, j-temp);
33             temp=j+1;
34         }
35         
36     }
37     reverse_word(string,strlen(string));
38     
39 }
40 
41 void reverse_word(char *string, int len)
42 {    
43     char temp;
44     int j;
45     if((string==NULL)||(len>1000))
46         printf("input word string not valid\n");
47     for(j=0;j<len/2;j++)
48     {
49         temp = *(string+j);
50         *(string+j) = *(string+len-1-j);
51         *(string+len-1-j) = temp;
52     }
53     return;
54 }

1. 编译存在警告:warning: 'gets' is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations] 。gets在新版的编译器中一般认为是危险的,因为有可能导致越界访问,可以忽略这样的警告。

如果使用scanf接收字符串的话,在串首遇到空格的话,跳过,继续寻找下一个非空格字符,在串中遇到空格时,会结束字符串的输入,因此实现比较困难。

向缓冲区读取字符时
1.scanf()用%c,%s空格键,Tab键,回车键结束一次输入,不会舍弃最后的回车符或空格或Tab(即还在缓冲区中),可使用getchar来吸收scanf()执行之后的换行符。
2.getchar()以回车键结束,也不会舍弃回车符(即存入缓存区)
3.gets()以换行符结束,但之后会舍弃换行符并以'\0',代替(意思是'\n'不会被代入到字符数组中,也不会将换行符存入到缓存区)也就是说:gets()函数读取到\n(我们输入的回车)于是停止读取,但是它不会把\n包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行。
 
2. 29行字符比较,可以使用ASCII值比较,也可以直接比较字符:
  if((*(string+j)==' ')||(*(string+j)=='\0'))
对于字符串,不能直接使用==进行比较,需要使用strcmp等函数
 

猜你喜欢

转载自www.cnblogs.com/DF11G/p/10112404.html
今日推荐