#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int count;
scanf("%d",&count);
char **array;
array = (char **) malloc(sizeof(char* ) * count);
for(int i=0;i<count;i++)
{
*(array +i) = (char *)malloc(sizeof(char) * 1000);
}
for(int i=0;i<count;i++)
{
fgets(*(array + i) , 1000 , stdin);
}
for(int i=0;i<count;i++)
{
printf("%s:::",*(array+i));
}
printf("\n");
return 0;
}
我试图用count元素创建一个字符串数组。我使用fgets函数使用for循环将元素读入数组。 但是,当我尝试打印元素时,std输出中缺少最后一个元素。 我尝试使用count = 8;
这些是我的投入。 但是不会打印200。
答案 0 :(得分:0)
尝试使用此版本,注释中解决了问题。
int main(void) {
int row, col /* 1000 */;
scanf("%d%d",&row, &col);
getchar();/* to clear stdin buffer */
char **array = malloc(sizeof(char*) * row);
for(int i=0;i < row; i++) {
/* allocate memory */
*(array +i) = malloc(sizeof(char) * col);
/* scan the data */
fgets(*(array + i), col, stdin); /* fgets add \n at the end of buffer if read */
array[i][strcspn(array[i], "\n")] = 0; /* remove trailing \n */
/* print it */
printf("%s\n",*(array+i));
}
printf("\n");
/* free dynamically allocated memory @TODO */
return 0;
}