如何允许用户输入具有指定初始大小的数组的值?

时间:2019-04-17 23:01:35

标签: c

我希望能够向此代码的用户询问数组的四个值。我有一些代码,但是它显示了我似乎无法解决的错误。我正在尝试按照此视频教程中的示例https://youtu.be/IPYA3b3_nyk?list=PL6gx4Cwl9DGAKIXv8Yr6nhGJ9Vlcjyymq建模一些代码,但是,似乎无法正确编译它。

错误如下:      在“主要”功能中:      intitializeint.c:12:9:警告:格式'%d'期望类型为'int'的参数,但是参数2的类型为'int *'[-Wformat =]               printf(“输入值%d。\ n”,&i +`);              ^

我尝试为每个提示输入值使用printf()和scanf(),但发现本教程并尝试模仿它。我已经尝试过重新排列“&i + 1”,但是它只会向后弹出相同的错误。我希望有一个增量,以便在输出中显示好像数组从1开始。

 #include <stdio.h>
 #include <stddef.h>

 void printArray(int n[]);

 int main(void)
 {
     int i;
     int n[4];

     for (i = 0; i < 5; ++i) {
         printf("Enter value %d. \n", &i+1);
         scanf("%d", &n[i]);
     }

     printf("%s%13s\n", "Element", "Value");
     printArray(n);

     return 0;
 }

 void printArray(int n[])
{
     int i;
     for (size_t i = 0; i < 4; ++i)  {
         printf("%7zu%13d\n", i, n[i]);
     }
 }

1 个答案:

答案 0 :(得分:0)

当您写&i时,您不小心创建了一个指向i的指针。您的指针的类型为int *,因为它是一个指向int的指针。 %d格式说明符期望一个int,而不是一个指向int的指针,因此这就是编译器给您该错误的原因。 (您应该重新读取该错误,并确保现在对每个单词都完全有意义。)

解决方案是删除错误的&运算符:

printf("Enter value %d.\n", i + 1);