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

时间:2019-05-29 09:26:12

标签: c string atoi

我正在尝试将字符串的每个字符转换为其ASCII码。字符串数组来自stdin。

我试图遍历字符串,并使用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还是很陌生,我认为这可以解决问题,但是在运行代码时出现“分段错误(内核已转储)”。我知道此错误与内存有关,但是我不知道如何调试它。

1 个答案:

答案 0 :(得分:0)

您无需进行任何转换,因为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];
}