《c程序设计语言》读书笔记-5.6-指针重写getline等函数

本文介绍了一组实用的C语言字符串处理函数,包括获取输入、转换整数与字符串、反转字符串及查找子串等,这些函数能有效提高C语言编程效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <curses.h>

int getline_(char *s,int n)
{
    char c;
    char *sta = s;

    while(--n > 0 && (c = getchar()) != EOF && c != '\n')
    {
        *s++ = c;
    }
    if(c == '\n')
        *s++ = c;
    *s = '\0';
    return s - sta;
}

int atoi_(char *s)
{
    int n,sign;

    for(;isspace(*s);s++)
        ;
    sign = (*s == '-') ? -1 : 1;
    if(*s == '+' || *s == '-')
        s++;
    for(n = 0;isdigit(*s);s++)
        n = 10 * n + *s - '0';

    return sign * n;
}

void reverse_(char *s)
{
    int temp;
    char *t;

    for(t = s + strlen(s) - 1;s < t;s++,t--)
    {
        temp = *s;
        *s = *t;
        *t = temp;
    }
}

void itoa_(int n,char *s)
{
    int sign;
    char *t = s;

    if((sign = n) < 0)
        n = -n;
    do
    {
        *s++ = n % 10 + '0';
    }while((n /= 10) != 0);

    if(sign < 0)
        *s++ ='-';
    *s = '\0';
    reverse_(t);

}

int strindex_(char *s,char *t)   //返回最右边出现的位置
{
    char *sta = s;
    char *p,*r;
    int n = -2;

    for(;*s != '\0';s++)
    {
        for(p = s,r = t;*r != '\0' && *p == *r;p++,r++)
            ;
        if(r > t && *r == '\0')
            n =  s - sta;
    }
    if(n != -2)
        return n;
    else
        return -1;
}


int main()
{
    char p[] = "abcdefgab",q[] = "uh";
    int n;
    n = strindex_(p,q);

    printf("%d",n);

    return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值