Pergunta

I am trying to print each char in a variable.

I can print the ANSI char number by changing to this printf("Value: %d\n", d[i]); but am failing to actually print the string character itself.

What I am doing wrong here?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int len = strlen(argv[1]);
  char *d = malloc (strlen(argv[1])+1);
  strcpy(d,argv[1]);

  int i;
  for(i=0;i<len;i++){
    printf("Value: %s\n", (char)d[i]);
} 
    return 0;
}
Foi útil?

Solução

You should use %c format to print characters in C. You are using %s, which requires to use pointer to the string, but in your case you are providing integer instead of pointer.

Outras dicas

The below will work. You pass in the pointer to a string when using the token %s in printf.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int len = strlen(argv[1]);
  char *d = malloc (strlen(argv[1])+1);
  strcpy(d,argv[1]);

  printf("Value: %s\n", d);
  return 0;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top