Asi que:
char *someCArray; # something
Quiero imprimir “ethin” de “algo”.
Puede utilizar el especificador de precisión printf
#include int main(void) { char s[] = "something"; int start = 3; int len = 5; printf("%.*s\n", len, s + start); return 0; }
Código también publicado en el teclado: http://codepad.org/q5rS81ox
Esto haría el trabajo Teniendo en cuenta que desea imprimir solo ” ethin ” no ” ething “.
Como @Mahesh dijo en su comentario, debe indicar la posición inicial y final desde donde desea imprimir caracteres para que su progtwig sea más general.
Char *p ="Something";
char *temp=p;
// Teniendo en cuenta que puede que en algún momento necesite la dirección base de su cadena.
temp=temp+3;
while(*temp!='g')
printf("%c",*temp++);
Si fuera más específico acerca de sus necesidades, podemos ayudarlo aún más. Estos son los conceptos básicos del lenguaje C, por lo que debe estudiar minuciosamente las matrices, los punteros en c.
EDITAR:
No podré darle el código completo, ya que esto iría en contra de las reglas de Stackoverflow y de la moto, que es como ” Repositorio técnico y próximo al cielo” para progtwigdores. Por lo tanto, solo puedo darle la lógica.
Siga imprimiendo caracteres hasta que la posición inicial y la final sean iguales o su diferencia sea cero. Puede elegir cualquiera de los dos métodos anteriores.
Tratar
char* strSth = "something"; std::string strPart; strPart.assign(strSth+3,strSth+8); std::cout << strPart;
El resultado será: "ethin".
#include int main() { char a[1024] = "abcdefghijklmnopqrstuvwxyz"; printf("Characters 0 through 2 of a[]: %.3s\n", a); printf("Characters 10 through 15 of a[]: %.6s\n", &a[10]); return 0; }
Imprime esto
Characters 0 through 2 of a[]: abc Characters 10 through 15 of a[]: klmnop
La notación “% .Ns” en la cadena printf es “% s” con un especificador de precisión. Verifique la página del manual de printf (3)