【问题标题】:How to print an Array of strings after passing it to another function [duplicate]将字符串数组传递给另一个函数后如何打印字符串[重复]
【发布时间】:2020-12-26 07:46:08
【问题描述】:

在接收到一定数量的学生及其姓名后,程序在将其传递给另一个函数进行打印后停止。我该如何更改?

#include <stdio.h>
#define MAX_STUDENT 1024

void print_name(char* surname,char* first_name,int n_students)
{
    int i,b=1;
    for(int i=0;i<n_students;i++)
    {
        printf("%d. %s, %s\n",b,first_name[i],surname[i]);
        b++;
    }
}
int main()
{
    int n_students,i,b=1;
    char surname[MAX_STUDENT][20],first_name[MAX_STUDENT][20];

    printf("number of students:");
    scanf("%d",&n_students);

    for(i=0;i<n_students;i++)
    {
        printf("%d. ",b);
        scanf("%19s %19s",&surname[i],&first_name[i]);
        b++;
    }
    print_name(surname,first_name,n_students);

    return 0;
}

【问题讨论】:

  • 稍微偏离主题:你应该了解结构。
  • mopheadkim,1) 为什么不使用 1 小时前问题的所有好答案? 2) 节省时间,启用所有编译器警告。
  • @Jabberwocky 我知道,但我只使用我们的教授教给我们的东西,结构还不是其中之一。
  • @chux-ReinstateMonica 我实际上忘了用函数发布它,所以我又问了一遍
  • mopheadkim,前一个和这个有同样的未解决问题。当 1) 启用所有警告,2) 使用良好的编译器时,您的许多代码问题都会发出警告。比在 SO 上发布更快。

标签: arrays c


【解决方案1】:
  1. 在函数参数和传递的内容之间匹配类型。在 main 中,您将二维数组作为 print_name 函数的参数传递,但您在 print_name 函数的定义中使用字符指针作为参数
  2. scanf() 的参数中删除&amp; 以传递具有正确类型的数据并避免未定义的行为
#include <stdio.h>
#define MAX_STUDENT 1024

void print_name(char surname[][20],char first_name[][20],int n_students) /* fix 1 */
{
    int i,b=1;
    for(int i=0;i<n_students;i++)
    {
        printf("%d. %s, %s\n",b,first_name[i],surname[i]);
        b++;
    }
}
int main()
{
    int n_students,i,b=1;
    char surname[MAX_STUDENT][20],first_name[MAX_STUDENT][20];

    printf("number of students:");
    scanf("%d",&n_students); /* note: & here is necessary */

    for(i=0;i<n_students;i++)
    {
        printf("%d. ",b);
        scanf("%19s %19s",surname[i],first_name[i]); /* fix 2 */
        b++;
    }
    print_name(surname,first_name,n_students);

    return 0;
}

【讨论】:

    猜你喜欢
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多