C语言编程(练习1:函数 )

题目: 定义一个函数,用于将一个字符串反序存放。例如,原串为 ABCDEF,则处理后的字符串为:FEDCBA

知识点:

  1. 字符串的定义问题
    char *s;
    上面只是定义一个字符串指针,并未为该指针分配存储空间。
    char s[100];      //定义一个存储字符串的数组,记得字符串与字符数组的区别。分配空间后,数组名s为字符串地址,s为指向数组的地址常量,不能做变量运算

  2. 字符串的读取问题
    区分scanf函数和gets函数读取字符串的区别:如何决定字符串何时结束;
    scanf()更基于获取单词,gets()更基于获取字符串;
    scanf函数以遇到的第一个非空白字符开始,使用%s格式,字符串读到(但不包括)下一个空白字符(比如空格、制表符或换行符);如果指定宽度,如使用%10s,会读到10个字符或直到遇到第一空白字符,由二者中最先满足的那个终止输入。           
代码实现:

/**<  定义一个函数,用于将一个字符串反序存放。例如,原串为 ABCDEF,则处理后的字符串为:FEDCBA */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>     //包含字符串相关函数的头文件

#define MAX_SIZE 100     //宏定义一个最大尺寸,数组的大小

void inverted(char *s);     //调用函数说明

int main()
{
    char s[MAX_SIZE];   //定义一个字符数组
    printf("输入字符串:\n");
    //注意scanf 和 gets的区别
    //scanf("%s",s);
    gets(s);
    inverted(s);    //调用函数
    printf("%s", s);    //输出字符串用%s格式符
    return 0;
}

void inverted(char *s)  //函数形参为指针传递
{
    int size = 0;
    int num = 0;
    int i;
    char plate;
    size = strlen(s);  //strlen函数是字符串中的字符个数,不包括字符串后面的\0结束符
    num = size/2;
    for(i=0; i<num; i++)
    {
        int inver = size-i-1;
        plate = s[i];
        s[i] = s[inver];
        s[inver] = plate;

    }
}

运行结果:

如果使用scanf()函数,会忽略开始输入时候的空白字符,并读取到下一个空白字符停止,如下:

正确的应该是使用gets()函数,如下:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值