C primer 第六章循环 习题6.7

6.07 让用户输入一个单词,并倒序打印这个单词

#include <stdio.h>
#include <string.h>
int main(void)
{
   char word[20];
   size_t size;
   int index;


   printf("Please enter a word:");
   scanf("%s",word);
   size=(strlen (word));
   index=size--;


   for(;index>=0;index--)
      printf("%c",word[index]);


   return 0;
}

 

注意:1)strlen()函数用于计算字符串长度,其返回值类型为size_t,实质是unsigned int,因此在本例中不可直接放入for循环比较>=0(可以比较>0),否则出现错误。解决方法为新定义int 变量 index,将strlen()的值赋给index;

2)本题中index作为字符串的下脚标,应从零开始计数,故index=strlen()-1;且一定要减到0才可跳出循环,故必须比较index>=0;

3)读取字符串用%s作为转换说明,且scanf在读取字符串时无需加 &;

 

PS:strlen()函数转换说明为%zd 或%u;

sizeof使用时可加括号可不加,当运算对象是类型时,例如sizeof(float),必须加上();对于特定量,写成 sizeof name或sizeof(name)均可;

strlen()在使用时务必加上();

sizeof() 和 strlen()区别:sizeof计算给数组(此处为字符串)分配的存储单元个数,strlen计算字符串中字符数(包括空格和标点符号);

posted @ 2017-05-17 11:23  ryosukeli  阅读(118)  评论(0编辑  收藏  举报