【发布时间】:2021-12-07 07:13:46
【问题描述】:
所以我被分配用 c 语言存储两个 50 位整数并使用它们做数学方程式。对我来说,问题是将输入的数字逐位存储在数组中。我想我可以将输入存储在这样的字符字符串中:
#include <stdlib.h>
#include <stdio.h>
int main ()
{
char string_test [50];
scanf("%s", string_test);
return 0;
}
但我不能将它用作数字,因为它存储为 char,我无法将它们逐位复制到另一个定义为 int 的数组中
经过一整天的搜索,我发现我需要像这样一个一个地复制我的字符串:
#include <stdlib.h>
#include <stdio.h>
int main ()
{
char string_test [50];
scanf("%s", string_test);
int arr[50];
for (int i = 0; i < 50; i++)
{
arr[i] = string_test[i] - '0';
}
return 0;
}
现在我的问题是为什么我需要减去“0”才能得到合适的结果?
【问题讨论】:
-
旁白:
char string_test [50];1 太小,无法存储 50 位 字符串。使用char string_test [50+1]; scanf("%50s", string_test);等。 -
您可以查看数值
5和字符'5'的 ASCII 表示之间的区别。后者的数值为0x35或53,这对于做数学计算是相当无用的 -
问题的答案和问题的解释可以在普通 C 编程书籍的“字符串”一章中找到。与一整天的搜索相比,学习所花费的时间应该少得多。
-
数字字符
'0'到'9'保证有连续的字符代码,因此从任何数字字符中减去'0'字符的字符代码将其转换为对应的数字值。