Estoy tratando de tener mi programa que tome un nombre como la entrada del usuario y, a continuación, imprimir las iniciales de ese nombre. es decir, tommy brown –> tb

Lo que tengo hasta ahora es este:

int main (void)
{

char scroll[100] = {"kang cheng junga"};
printf ("%c\n", *(scroll+2));

for (int i=0; i<100; i++)
{
    if (*(scroll+i)=" ")
    {
        printf (*(scroll+i+1));
    }
}

Me sale este error:

de error: incompatible puntero a entero
la conversión de asignar a ‘char’ de ‘char [2]’

[-Werror,-Wint-conversión]
si (*(desplazamiento+i)=» «)

de error: utilizando el resultado de una asignación como
la condición, sin paréntesis

[-Werror,-Wparentheses]
si (*(desplazamiento+i)=» «)

¿Alguien puede decirme cómo he jodido esto? Estoy teniendo un tiempo difícil la comprensión de cómo * y & función en un C. soy un principiante así que realmente no sé lo que estoy haciendo.

  • Cosa básica: = debe ser ==
  • if (*(desplazamiento+i)=» «) ==> if (*(desplazamiento+i)==’ ‘) comparar personajes no carácter y cadena.
InformationsquelleAutor noggy | 2015-09-30

4 Comentarios

  1. 1

    Además strtok, este es un tiempo también se puede hacer uso de strpbrk para encontrar fácilmente cada space:

    #include <stdio.h>
    #include <string.h>
    
    int main (void) {
    
        char scroll[100] = "kang cheng junga";
        char *p = scroll;
    
        printf ("\n full name: %s\n", scroll);
        printf (" initials : %c", *p);
    
        while ((p = strpbrk (p, " ")))
                printf ("%c", *++p);
    
        printf ("\n\n");
    
        return 0;
    }

    Salida

    $ ./bin/initials
    
     full name: kang cheng junga
     initials : kcj

    También puede eliminar la dependencia de la string.h con una versión alternativa que utiliza punteros solos:

    #include <stdio.h>
    
    int main (void) {
    
        char scroll[100] = "kang cheng junga";
        char *p = scroll;
    
        printf ("\n full name: %s\n", scroll);
        printf (" initials : %c", *p);
    
        while (*p++)
            if (*p == ' ' && *++p)
                printf ("%c", *p);
    
        printf ("\n\n");
    
        return 0;
    }
  2. 1

    El Error que está consiguiendo es debido a que el operador de asignación (=) .

    if (*(scroll+i)=" ")//assigning a value(blank)
    {
        printf (*(scroll+i+1));
    }
    
    if (*(scroll+i) == ' ')//Comparing it with a value (blank)
    {
        printf (*(scroll+i+1));
    }
    • También ¿por Qué han tomado los límites a 100?. Innecesariamente la ejecución de la para el bucle de 100 veces
    • *(desplazamiento+i) == «»; -> *(desplazamiento+i) == » ;
    • Este método lanza advertencia: comparison between pointer and integer y no permito que mi código para tener alguna advertencia, es una mala práctica.
  3. 0

    En C, = es el operador de asignación, y == es el operador de igualdad. Usted necesidad de utilizar el más nuevo.

    Que, dijo, no es una buena función de la biblioteca, denominada strtok() que pueden hacer su vida más fácil. Acaba de pasar la cadena y un delimitador, (aquí, el espacio ) y va a devolver el token para usted, para que usted pueda imprimir el primer carácter para obtener las iniciales.

  4. 0

    junto con strtok o strchr aquí es una forma sencilla de implementar , algunas de las condiciones de contorno son desaparecidos, como nombre termina con una sola letra, etc

    #include <stdio.h>
    
    int main (void)
    {
    
            int i = 0;
            char scroll[100] = {"kang cheng junga"};
            char *p = scroll; //point to base
            printf("%c", *p ); //first letter is almost always certain
            while( *p != '
    #include <stdio.h>
    int main (void)
    {
    int i = 0;
    char scroll[100] = {"kang cheng junga"};
    char *p = scroll; //point to base
    printf("%c", *p ); //first letter is almost always certain
    while( *p != '\0' ) { //till end of String
    if ( *(p-1)     == ' ' && *(p+1) != '\0') { //If previous is space and next letter exists
    printf("%c", *p );      //take it save it or print it
    }
    p ++ ; //proceed
    }
    return 0;
    }
    '
    ) { //till end of String if ( *(p-1) == ' ' && *(p+1) != '
    #include <stdio.h>
    int main (void)
    {
    int i = 0;
    char scroll[100] = {"kang cheng junga"};
    char *p = scroll; //point to base
    printf("%c", *p ); //first letter is almost always certain
    while( *p != '\0' ) { //till end of String
    if ( *(p-1)     == ' ' && *(p+1) != '\0') { //If previous is space and next letter exists
    printf("%c", *p );      //take it save it or print it
    }
    p ++ ; //proceed
    }
    return 0;
    }
    '
    ) { //If previous is space and next letter exists printf("%c", *p ); //take it save it or print it } p ++ ; //proceed } return 0; }

Dejar respuesta

Please enter your comment!
Please enter your name here