不包括前 N 个字符的字符串打印

String printing excluding the first N characters

我想打印我的字符串“Something”不带 printf 语句中的前 N ​​个字母

示例 1:我可以做“相反”(printf 只需 N 个首字母):

#include <stdio.h>
int main() {
  char str[] = "Something";
  printf("%5s", str);
}

输出:Somet

预期输出hing

中间开始打印:

printf("%s", &str[5]);

您可以尝试使用指针运算来传递您希望开始打印的字符串中的起点地址。在更一般的上下文中,您需要以某种方式检查您跳过的字符数是否小于主字符串的总长度。

#include<stdio.h>
int main()
{
    char str[]="Something";
    int numCharsToSkip = 5;

    printf("%s", (str + numCharsToSkip));
}

有很多方法 select 在缓冲区中从哪里开始打印。一个可能有用的函数,strchr(const char *buf, char ch),returns 指向 char ch 第一次出现的指针。所以,如果您想从字母 h 处开始打印,请按以下方式调用 strchr()

对于预期输出 hing,使用:

char str[]="Something";
printf("%s", strchr(str, 'h'); 

或者,对于预期输出 omething,使用:

printf("%s", strchr(str, 'o'); 

另一个有用的函数:strstr(const char *source, const char *search) returns 指向 source[ 中存在的任何 sub-string、search 的指针 缓冲区,如果你想在一个更大的缓冲区中的特定单词处开始打印,那么 so 也很有用,例如给定:

char longerStr[] = "This is really something else";
char *token = strstr(longerStr, "thing");
if(token)    //test before using to prevent trying to print a nul pointer in the event
{            //"thing" is not found in buffer.
    printf("%s", token);//note using " ", not ' '
}