将字符串数组转换为带有ascii码的数组

标签 c string atoi

我正在尝试将字符串的每个字符转换为其 ASCII 代码。字符串数组来自标准输入。

我尝试循环遍历字符串并使用 atoi() 将每个字符转换为 ASCII 并将该 ASCII 代码添加到新的 int 数组中。

char s2[1024];
fgets(s2, 1024, stdin);
int arr[1024]; 
int i = 0;
while (i < strlen(s2))
  {
  char * start = s2;
  int j = 0;
    while(start != "\0")
    {
      arr[j++] = atoi(start);
    }
    i++;
  }

我对 C 还很陌生,我认为这可以工作,但当我运行代码时,我收到“段错误(核心转储)”。我知道这个错误与内存有关,但我不知道如何调试它。

最佳答案

您不需要转换任何内容,因为 s2 中的字符已经是 ASCII 值。

你可能想要这样的东西:

char s2[1024];
fgets(s2, 1024, stdin);
int arr[1024]; 
int i = 0;
while (i < strlen(s2))
{
  arr[i] = s2[i];
  i++;
}

如果您的输入是:

ABCD

arr 将包含以下值:{65, 66, 67, 68, x, x, x},其中 x 代表“不确定值”。

更好的循环版本:

for (int i = 0; i < strlen(s2); i++)
{
  arr[i] = s2[i];
}

总体更好的版本:

#define MAXLINE 1024

char line[MAXLINE];
fgets(line, sizeof line, stdin);
int arr[MAXLINE]; 

for (int i = 0; i < strlen(s2); i++)
{
  arr[i] = s2[i];
}

关于将字符串数组转换为带有ascii码的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56357256/

相关文章:

c - 使用 atoi 调用获取段错误

c - 为什么解释为 double 的整数会呈现零?

c - addrinfo 的存储大小未知

c - 如何在 MacO 上生成线程死锁?

跨平台加密容器库

c++ - 将从二进制文件读取的字符串转换为整数

c++ - atoi() 没有按预期工作

python 在字符串中找到最后一个

java - 空字符串的内存表示

html - 如何将字符串从 unicode 转换为 html 实体