#c #string #format #printf
#c #строка #формат #printf
Вопрос:
Я хочу напечатать свою строку, которая является «Чем-то», без первых N букв внутри printf
инструкции.
Пример 1: я могу сделать «наоборот» ( printf
только N первых букв):
#include <stdio.h>
int main() {
char str[] = "Something";
printf("%5s", str);
}
Вывод: Somet
Ожидаемый результат: hing
Ответ №1:
Начните печать с середины:
printf("%s", amp;str[5]);
Комментарии:
1. Большое вам спасибо, я искал это некоторое время
Ответ №2:
Вы могли бы попробовать использовать арифметику указателя, чтобы передать адрес начальной точки в строке, с которой вы хотите начать печать. В более общем контексте вам нужно будет каким-то образом проверить, что количество пропускаемых символов меньше общей длины основной строки.
#include<stdio.h>
int main()
{
char str[]="Something";
int numCharsToSkip = 5;
printf("%s", (str numCharsToSkip));
}
Ответ №3:
Есть много способов выбрать, с чего начать печать в буфере. Одна потенциально полезная функция, strchr(const char *buf, char ch), возвращает указатель на первое вхождение 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) возвращает указатель на любую подстроку, поиск, существующую в буфере источника, поэтому она также полезна, если вы хотите начать печать с определенного слова в буфере большего размера, например, с учетом:
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 ' '
}