【发布时间】:2019-09-14 00:42:09
【问题描述】:
我正在做一个使用指针遍历数组的家庭作业。当我将 5 位邮政编码分配给数组时,该数组将填充该数字的 ascii 值。我很难理解指针的概念以及何时使用它们。
我在 eclipse 上使用了调试工具来确定数组填充不正确,而不是我的输出语句。
这是用于填充数组的方法,其中r1 是类的对象,zipcode 是大小为 5 的整数数组(for 循环仅递增到 5 用于测试目的):
void getDataFromFile(RentalAgency &r1){
ifstream infile;
string input;
char number;
cout << "Enter the file name: ";
infile.open("Agencies.txt");
infile.get((r1.name),MAX_SIZE,space);
for(int i = 0;i < 5;i++){
infile >> number;
*(r1.zipcode+i) = number;
}
infile.close();
}
这是 struct RentalAgency 的代码:
struct RentalAgency{
char name[MAX_SIZE];
int zipcode[5];
RentalCar inventory();
};
当给定数字 93619 时,预期输出为 93619,但实际输出为 57 51 54 49 57
【问题讨论】:
-
请提供minimal reproducible example。看起来一切都是正确的。您正在读取字符并将它们存储为整数。当您将值 57 打印为整数时,将打印数字本身。当您将 57 打印为 char 时,将打印字符 '9'。
-
请添加
r1的定义和它的类或结构定义。r1.zipcode是指针、数组还是别的什么?另外,请提供number的定义。 -
您可以使用std::atoi 转换它:
*(r1.zipcode+i) = std::atoi(number);。请记住包括<cstdlib>。或者,您可以将zipcode的数据类型从整数更改为字符。 -
请不要将代码发布为评论。编辑您的问题。
-
为什么有时使用 std::string 有时使用 cstring?您应该始终使用 std::string。请阅读Why is "using namespace std;" considered bad practice?