遍历字符数组并打印字符

7

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

我可以通过更改为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个回答

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

本以为这是一件简单的事情,感谢 @mvp。 - ojhawkins

3
下面的方法可行。在使用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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接