简体   繁体   English

2维数组通讯录中的fgets有问题

[英]2 Dimensional Array address Book having issues with fgets

This is my assignment: 这是我的任务:

Create a program that allows a user to enter up to 10 addresses of friends. 创建一个程序,允许用户输入最多10个朋友的地址。 Use a two dimensional array to store the address of friends'. 使用二维数组存储朋友的地址。 After each address is entered, the user should have the option to enter another address or print out a report that shows each addresses entered thus far. 输入每个地址后,用户应该可以选择输入另一个地址或打印出报告,显示到目前为止输入的每个地址。

I get most of it but I am having my main issue with fgets. 我得到了大部分,但我的主要问题是fgets。 I keep getting this error: 我不断收到此错误:

warning: passing arg 1 of `fgets' makes pointer from integer without a cast

The code: 编码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main ()
{
    char name[20]= {0};
    char address[40]= {100};
    int choice;
    int i;

    printf("Welcome to the Address Book!\n\n");
    for (i=0;i<10;i++)              //start of the array loop. should give an exit    after each entry
    {
        printf("Would you like to (1)Enter an address, or (2)Print the address book?\n");
        scanf("%i",&choice);
        switch (choice)
        {
            case 1:
            {
                printf("Please enter a name...\n");
                fgets(name[i],20,stdin);
                printf("You entered %s .", name);
                printf("Please enter an address...\n");
                fgets(address[i],40,stdin);
                printf("You enteres %s .", address);
            }
                break;
            case 2:
                for (i = 0; i<10; i ++)
                {
                    printf("%s\n", name[i]);
                    printf("%s\n", address[i]);
                }
                break;
        }
    }
    return (0);
}

Find the corrected code in below 在下面找到更正的代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main ()
{
    char name[10][20]; //Fix3
    char address[10][40];//Fix4
    int choice;
    int i, j;

    printf("Welcome to the Address Book!\n\n");
    for (i=0;i<10;i++)              //start of the array loop. should give an exit    after each entry
    {
        printf("Would you like to (1)Enter an address, or (2)Print the address book?\n");
        scanf("%i",&choice);
        switch (choice)
        {
            case 1:
            {
                printf("Please enter a name...\n");
                getchar(); //Fix1
                fgets(name[i],20,stdin); 

                printf("You entered %s .", name);
                printf("Please enter an address...\n");
                //getchar();//Fix2

                fgets(address[i],40,stdin);
                printf("You enteres %s .", address);
            }
                break;
            case 2:
            {
                for (j = 0; j<i; j ++)
                {
                    printf("%s\n", name[j]);
                    printf("%s\n", address[j]);
                }
              }
                break;
        }
    }
    return (0);
}

The corrections are: 更正为:

  1. 2D array is used to get the name and address 2D数组用于获取名称和地址
  2. getchar() is called to consume '\\n' before using fgets(); 在使用fgets()之前,调用getchar()以消耗'\\ n';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM