【发布时间】:2022-01-05 08:44:53
【问题描述】:
我现在正面临这个问题,我希望找到澄清和解决方案。 实际上,我的代码运行没有任何问题,只是当我想打印 指向 char 数组的指针,它没有以所需的方式打印。 我应该使用多维数组吗?我很困惑。
我是 c 语言的新手,所以我的代码可能有点乱:>
#include<stdio.h>
#define SIZE 10
int main() {
int no_of_customers;
char customer_name[SIZE];
char* customer_namePtr[SIZE];
printf("enter number of customers you wish to add ");
scanf_s("%d", &no_of_customers);
for (int i = 0, j = 0; i < no_of_customers; ++i, ++j) {
printf("Enter %d customer's name ", j + 1);
scanf_s("%9s", &customer_name[i], 10);
customer_namePtr[i] = &customer_name[i];
}
puts("");
printf("customer name's are:\n");
for (size_t i = 0; i < no_of_customers; ++i) {
printf("%9s", customer_namePtr[i]);
}
return 0;
}
【问题讨论】:
-
“它没有以所需的方式打印”不是一个充分的问题描述。编辑问题以提供minimal reproducible example,包括重现问题的示例输入、观察到的输出和所需的输出。确定哪个特定的
printf没有按您的意愿工作。 -
我已编辑并尽可能清晰地编写代码!
-
当我需要打印客户姓名时,我的意思是最后一个 printf
-
例如,如果我想打印 Ali 和 Zayn 的名字。它将第一次迭代打印为 AZayn,第二次打印为 Zayn。 @EricPostpischil
-
您的代码只有一个
char数组作为客户名称,即用char customer_name[SIZE];定义的数组。所以它只能记住一个名字。在scanf("%9s", &customer_name[i]);中,您告诉scanf从位置i开始将输入读入数组。这就是为什么Zayn从位置 1 开始放入数组中,覆盖从位置 0 开始的大部分Ali。你的班级最近学到了什么?指针?malloc?二维数组?使用最近教授的概念来记住多个名称。