首页 > 代码库 > C primer 第六章循环 习题6.7
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计算字符串中字符数(包括空格和标点符号);
C primer 第六章循环 习题6.7