【问题标题】:Store Ascii Values存储 Ascii 值
【发布时间】:2012-03-16 06:18:26
【问题描述】:

如何使用 strcpy 将 Ascii 字符 a 到 z 存储在任何一种类型的变量中?

for(i=97;i<122;i++)
{
    for(j=97;j<122;j++)
    {
        printf("%c%c",i,j);
        int a = strcpy(i,j);
    }
}

【问题讨论】:

  • XY 的 ASCII 值是多少??
  • strcpy 处理 char* 不是 char 或 int。见manpagez.com/man/3/strcpy
  • @Pheonix - 你的意思是'xy'?还是 XYZZY?
  • 对于单个字符,strcpy 根本没有任何意义。顾名思义,它的目的是复制(以空结尾的)未指定长度的字符串。

标签: c


【解决方案1】:

所以(假设 ASCII):

char str[27]={0};
char temp[2]={0};
int i;
for (i='a';i<='z';i++) {
 temp[0]=i;
 strcpy(str,temp);
}

但是你真的需要使用strcpy吗?

【讨论】:

    【解决方案2】:
    char a[3] = {0};
    
    for(i=97;i<122;i++)
    {
        for(j=97;j<122;j++)
        {
            printf("%c%c\n", i, j);
            a[0] = i;
            a[1] = j;
            printf("%s\n", a); 
        }
    }
    

    【讨论】:

      【解决方案3】:

      您可以在循环中使用类型转换轻松做到这一点

      int num = 97;
      char a = (char)num;   // 'a' = 97 casting int to char 
      num = (int)a       // num = 97 cast 'a' to ASCII
      

      试试看

      【讨论】:

      • 你确定演员阵容吗?
      • 是的,它适用于 char。因为当您尝试将 char 转换为 int 时,它会返回此 char 的 ASCII 值。
      • 再次,您确定将 int 转换为 char 的正确方法是 (int)num 吗?
      • 整数赋值给整数时不需要强制转换。
      • signed char 自然地拥有一个 ascii 值。正确的演员表是 (char) num;
      【解决方案4】:
      int main() {
          int a = 0;
          char c = '\0';
          scanf(" %c", &c);
          a = c + 0;
          printf("%d", a);
      }
      

      输出:输入字符的 ASCII 值。

      我已经提供了代码。请参考。 为什么会这样? 关注分配给 int 变量 a 的加法运算。在编译这个操作的过程中,编译器发现变量 c 是 char 类型但是;运算符 + 在它旁边,因此编译器使用存储在 c 变量中的字符的 ascii 值。

      希望对你有所帮助。谢谢。

      【讨论】:

      • 请将代码发布为实际文本,而不是图像。此外,不仅+0 在这里不做任何事情,而且int a; 也不是必需的。你可以直接用%d打印c
      • 请仔细阅读问题。问题是要存储字符的 ascii 值,而不仅仅是打印它们。好的? @HolyBlackCat 我希望你能再次阅读这个问题。
      • 我想我已经提供了正确的解决方案来存储 ascii 值。但不知道为什么我的回答有两个不喜欢?
      【解决方案5】:

      如何使用strcpy()在任何一种类型的变量中存储 Ascii 字符?

      您不需要它,因为单个字符 strcpy() 是不必要的。

      此外,您尝试使用strcpy() 处理int,而此函数处理char*


      你可以这样做:

      char myarray[3] = {0};
      for(i = 97; i < 122; i++)
      {
          for(j = 97; j < 122; j++)
          {
              printf("%c%c\n", i, j);
              myarray[0] = i;
              myarray[1] = j;
              printf("%s\n", myarray); 
          }
      }
      

      我使用了 char 数组,因为如果您将 ASCII 字符存储在 int 中,您不能期望它打印相同的字符,因为它存储在 char 中。即使你尝试Convert char array to a int number in C,你也无法成功。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-20
        • 1970-01-01
        • 2010-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-13
        • 1970-01-01
        相关资源
        最近更新 更多