Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.6k views
in Technique[技术] by (71.8m points)

c - Is there any way to return a string starting at a certain index without using the library functions

char* string = "Hello, what's up?";

and I want to just return

"at's up?"


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You can write a function. If the function shall not use standard C string functions then it can look for example the following way

char * substr( char *s, size_t pos )
{
    size_t i = 0;

    while ( i < pos && s[i] ) ++i;

    return s + i;
}

As C does not support function overloading then the function above can be also written like

char * substr( const char *s, size_t pos )
{
    size_t i = 0;

    while ( i < pos && s[i] ) ++i;

    return ( char * )( s + i );
}

Here is a demonstrative program.

#include <stdio.h>

char * substr( const char *s, size_t pos )
{
    size_t i = 0;

    while ( i < pos && s[i] ) ++i;

    return ( char * )( s + i );
}

int main(void) 
{
    char * s = "Hello, what's up?";
    
    puts( substr( s, 9 ) );
    
    return 0;
}

The program output is

at's up?

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...