将字符串添加到字符串数组时打印����

时间:2019-04-09 05:04:27

标签: c

当我尝试将一个字符串保存到一个字符串数组中时,始终出现错误“命令由信号11终止”。从下面的链接更改代码后,现在名称显示为``W''。

我使用此link修复了我的代码,但仍然导致我收到错误“命令被信号11终止”。

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

    void getName(char* c[], int size);
    int main(void) {
        int yenoSize = 0;
        int strSize = 0;
    char name1[30];
    char* name[30];
    char* students[5][30];

    for(int i=0;i<1;i++){
    getName(name, strSize);
    students[i][0] = name1;
    }

    for(int k=0; k<1;k++){
    printf("Student Name: %s \n", students[k][30]);

    }

    }

    void getName(char* c[], int size){
    char name1[30];
    printf("Enter student name: ");
    fgets(name1, 30, stdin);
    c[0] = &name1[0];
    printf("%s", name1);

    }

输出应该打印出用户输入的名称(学生姓名:Jon),但当前正在打印``W''。我该如何解决该问题?我认为名称指针指向null存在问题。那是问题吗?感谢您的帮助!

1 个答案:

答案 0 :(得分:-1)

2个主要问题。

1)在main()中,您使用getName()调用name,但将name1存储在students变量中。

2)在功能getName()中,name1是一个本地数组。此变量的范围限于getName()。您无法通过将其分配给name1来返回c[0]的地址,因为函数返回后OS可能会释放它。您可以考虑为此使用malloc()