【问题标题】:How do you convert an int to it's respective ASCII letter in C?您如何将 int 转换为 C 中相应的 ASCII 字母?
【发布时间】:2020-08-29 10:10:15
【问题描述】:

我挑战自己制作一个需要一个 int 的程序,它必须打印相应的 ASCII 字母,如下所示:如果数字是 65,它应该打印出 A 等等。但我不知道该怎么做。到目前为止,这是我的代码:

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

int main(void)
{
    for (int i = 65; i < 81; i++)
    {
        printf("%s\n", i);
    }

}

我需要在string b = NULL;printf("%s\n", b); 之间的位置添加某种函数,但我不知道应该使用哪个函数。最后,它应该按顺序打印出所有字母表,每个字母都有自己的一行。如果您碰巧知道可以帮助我的功能,请告诉我。

附言

如果我按照上面的示例进行操作,我会收到以下错误消息:

clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow    try.c  -lcrypt -lcs50 -lm -o try
try.c:12:18: error: format specifies type 'char *' but the argument has type 'int' [-Werror,-Wformat]
  printf("%s\n", i);
          ~~     ^
          %d
1 error generated.
<builtin>: recipe for target 'try' failed
make: *** [try] Error 1

【问题讨论】:

    标签: c string integer cs50


    【解决方案1】:

    最后,它应该按顺序打印出所有字母,每个字母都有自己的一行。

    你真的不需要一个函数来做到这一点。 string 也是错误的选择,因为您只想打印字符。这个for 可能做了你想做的事:

    for (int i = 0; i < 26; ++i)
    {
        printf("%c\n", i + 'a');
    }
    

    【讨论】:

      【解决方案2】:

      我用过这个:

      int integer = // your int ;
      char c = integer;
      

      很简单,就是把它变成一个字符。

      另外,您可以使用来自&lt;ctype.h&gt;isascii 检查结果

      【讨论】:

      • 那不会改变参数不匹配,根本不需要。
      【解决方案3】:

      我认为你不需要任何东西。它应该在您第 %s 天时自动将整数打印为字符。

      简单地做:

      for(int i = 0; i < 26; i++)
      {
      
        printf("%s\n", i);
      }```
      

      【讨论】:

      • 我的意思是我想这样转换它:如果 int 是 65,那么它应该打印出字母 A,因为在 aschii 中,数字 65 相当于字母 A
      • "当您在 %s 时,它应该会自动将整数打印为字符。"你是在哪里拿到的?正如您在问题的错误消息中清楚地看到的那样,在使用 %s 时传递 int 不是一个好主意。它将使用该数字作为地址并开始从该内存位置读取字符。那是未定义的行为,您最终会出现段错误的可能性很高。
      • 这就是它的工作原理。你所要做的就是尝试运行它,你会的,我是对的。
      猜你喜欢
      • 2012-11-04
      • 2011-07-16
      • 2013-04-15
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多