在字符串数组中插入字符串
Insert strings in array of string
我必须在 C 中的字符串数组中插入字符串。我写了一个函数,但它没有用。你能帮帮我吗?
当我要打印数组时,程序崩溃了。
谢谢
int leggi(char **a, int *len) {
int i;
scanf("%d", len);
if(*len <= 0) return 1;
a = (char **) malloc(*len * sizeof(char *));
if(a == NULL) return 1;
for( i = 0; i < *len; i++ )
{
a[i]=(char *)malloc(101*sizeof(char));
scanf("%s", &a[i]);
}
printf("Saved\n");
return 0;
}
int main() {
int i, n;
char **A;
if(leggi(A, &n)) return 1;
printf("%d\n",n);
for( i = 0; i < n; i++ )
{
printf("printf\n");
printf("%s\n", &A[i]);
}
return 0;
}
将scanf("%s", &a[i])
改为scanf("%s", a[i])
,a[i]是指向你字符串中第一个字符的指针,获取它的地址就是return指针的地址,而不是实际的第一个字符。另一件需要注意的事情是,您实际上并没有修改 main 函数中的指针,只是修改了局部函数指针,因此,它不会对 main 中的指针产生任何影响。
这是编辑后的版本:
int read(char ***a, int *len) {
int i;
scanf("%d", len);
if( *len <= 0 ) return 1;
(*a) = (char **) malloc(*len * sizeof(char *));
if((*a) == NULL) return 1;
for( i = 0; i < *len; i++ )
{
(*a)[i]=(char *)malloc(101*sizeof(char));
scanf("%s", (*a)[i]);
}
printf("Saved\n");
return 0;
}
int main() {
int i, n;
char **A;
if(read(&A, &n)) return 1;
printf("%d\n",n);
for( i = 0; i < n; i++ )
{
printf("printf\n");
printf("%s\n", A[i]);
}
return 0;
}
我必须在 C 中的字符串数组中插入字符串。我写了一个函数,但它没有用。你能帮帮我吗?
当我要打印数组时,程序崩溃了。
谢谢
int leggi(char **a, int *len) {
int i;
scanf("%d", len);
if(*len <= 0) return 1;
a = (char **) malloc(*len * sizeof(char *));
if(a == NULL) return 1;
for( i = 0; i < *len; i++ )
{
a[i]=(char *)malloc(101*sizeof(char));
scanf("%s", &a[i]);
}
printf("Saved\n");
return 0;
}
int main() {
int i, n;
char **A;
if(leggi(A, &n)) return 1;
printf("%d\n",n);
for( i = 0; i < n; i++ )
{
printf("printf\n");
printf("%s\n", &A[i]);
}
return 0;
}
将scanf("%s", &a[i])
改为scanf("%s", a[i])
,a[i]是指向你字符串中第一个字符的指针,获取它的地址就是return指针的地址,而不是实际的第一个字符。另一件需要注意的事情是,您实际上并没有修改 main 函数中的指针,只是修改了局部函数指针,因此,它不会对 main 中的指针产生任何影响。
这是编辑后的版本:
int read(char ***a, int *len) {
int i;
scanf("%d", len);
if( *len <= 0 ) return 1;
(*a) = (char **) malloc(*len * sizeof(char *));
if((*a) == NULL) return 1;
for( i = 0; i < *len; i++ )
{
(*a)[i]=(char *)malloc(101*sizeof(char));
scanf("%s", (*a)[i]);
}
printf("Saved\n");
return 0;
}
int main() {
int i, n;
char **A;
if(read(&A, &n)) return 1;
printf("%d\n",n);
for( i = 0; i < n; i++ )
{
printf("printf\n");
printf("%s\n", A[i]);
}
return 0;
}