当我尝试将字符串保存到字符串数组中时,我不断收到错误“命令由信号 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”。我该如何解决这个问题?我相信问题存在于名称指针指向空。这是问题所在吗?我感谢您的帮助!
最佳答案
2 个主要问题。
1) 在 main()
中,您使用 name
调用 getName()
,但将 name1
存储在students
变量。
2) 在函数getName()
中,name1
是一个本地数组。该变量的范围仅限于getName()
。您不能通过将name1
的地址分配给c[0]
来返回它,因为它可能会在函数返回后被操作系统释放。您可以考虑使用 malloc()
来实现此目的。
关于c - 将字符串添加到字符串数组时打印 ����,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55585421/