请问能帮我看看这个代码哪里有错误吗🥺


void input_information()
{
    printf("\n请输入您需要录入的学生数量:");
    int number;
    scanf("%d",&number);
    printf("\n");
    
    char student[number][5];//姓名 性别 年龄 学号 学院 
    
    int i,j;
    for(i=0;i<number;i++)
    {
        for(j=0;j<5;j++){    
        
        switch(j){
            case 0:
                printf("请输入学生姓名:\n");
                break;
            case 1:
                printf("请输入学生性别:\n");
                break;
            case 2:
                printf("请输入学生年龄:\n");
                break;
            case 3:
                printf("请输入学生学号\n");
                break;
            case 4:
                printf("请输入学生学院:\n");
                break;
        }
        
        scanf("%s",&student[i][j]);
        printf("\n");
        }    
        
    }
    
    input(student[number][5]);
    printf("录入成功!");
}
int input(char s[100][100])
{
    

    FILE *fp_input= fopen("D:\\c\\class.txt","w");
    
    if(fp_input==NULL){
        
        printf("无法打开输入文件!\n");
        return 0;
    }
    
    int i1,j1;
    for(i1=0;i1<100;i1++){
        
        for(j1=0;j1<100;j1++){
            fprintf(fp_input,"%s",student[i][j]);
        
        }
        printf("\n");
        fprintf(fp_input,"\n");
    }
    
       fclose(fp_input);
       
       return 1;
}

char s[x][y] 写法有问题是

  • 您这是要读文件,参数怎么是'w'哟,读文件可以缺省,不写就是'r',要写就只能是'r'或者'r+'/'w+'/'a+'哦。

    img


  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7589086
  • 这篇博客也不错, 你可以看下有符号位的数据表示法以及位运算
  • 除此之外, 这篇博客: 函数调用不添加括号代表什么?中的 回调函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 回调函数的具体定义比较拗口,比较难以理解,因此比较生动的例子就是:小明到小红店里去购物,但是小红家恰好没货,因此小明留下了联系方式,等进货之后联系小明来购物

    更加清晰的解释为:如果将函数指针作为参数被传递到函数中,当这个函数指针被用于调用其指向的函数时,我们就称这个函数为回调函数

    回调函数的主要优势是解耦,即调用者和被调用者被分开,调用者无需了解谁是被调用者,它只需知道如果满足某条件之后,函数将被调用

  • 您还可以看一下 千锋老师的什么是云计算? 课程中的 这是我选择云计算的 第一个原因小节, 巩固相关知识点

修改如下,改动处见注释,供参考:

#include <stdio.h>
#define N 100    // 人数
#define M 5      //姓名 性别 年龄 学号 学院
int input(char s[N][M][32], int n)
{
    FILE *fp_input = fopen("D:\\class.txt","w"); //"D:\\c\\class.txt"

    if(fp_input==NULL){

        printf("无法打开输入文件!\n");
        return 0;
    }

    int i,j; // 修改
    for(i = 0;i < n;i++){ //for(i1=0;i1<100;i1++) 修改

        for(j = 0;j < M; j++){
            fprintf(fp_input,"%s ",s[i][j]);  // 修改
            //fprintf(fp_input,"%s ",student[i][j]);
        }
        //printf("\n"); 修改
        fprintf(fp_input,"\n");
    }
    fclose(fp_input);
    return 1;
}
void input_information()
{
    printf("\n请输入您需要录入的学生数量:");
    int number;
    scanf("%d",&number);
    printf("\n");

    char student[N][M][32];//修改

    int i,j;
    for(i = 0;i < number; i++)
    {
        for(j=0;j < M;j++){

        switch(j){
            case 0:
                printf("请输入学生姓名:\n");
                break;
            case 1:
                printf("请输入学生性别:\n");
                break;
            case 2:
                printf("请输入学生年龄:\n");
                break;
            case 3:
                printf("请输入学生学号\n");
                break;
            case 4:
                printf("请输入学生学院:\n");
                break;
        }

        scanf("%s", student[i][j]); //scanf("%s", &student[i][j]); 修改
        printf("\n");
        }    
        system("cls");
    }
    input(student, number);//input(student[number][5]);  修改
    printf("录入成功!");
}
int main()
{
     input_information();

     return 0;
}