迭代char数组和打印字符

时间:2013-09-28 03:11:44

标签: c string ansi

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

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

我在这里做错了什么?

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分: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;
}