6

我正在尝试在变量中打印每个字符。

我可以通过更改为这个来打印 ANSI 字符编号,printf("Value: %d\n", d[i]);但实际上无法打印字符串字符本身。

我在这里做错了什么?

#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;
}
4

2 回答 2

9

您应该使用%cformat 在 C 中打印字符。您正在使用%s,这需要使用指向字符串的指针,但在您的情况下,您提供的是整数而不是指针。

于 2013-09-28T03:14:14.773 回答
2

以下将起作用。在 printf 中使用标记 %s 时,您将指针传递给字符串。

#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;
}
于 2013-09-28T03:19:50.767 回答