我在C中有以下代码:
#define LINES 40
int i,j,k = 0;
char **c;
char tmp;
// allocate key array memory
if( (c = malloc(LINES*sizeof(char*))) == NULL)
printf("Error allocating memory\n");
for(i=0;i<LINES;i++){
c[i] = malloc(10*sizeof(char));
}
我还有一个包含这样数据的文件:
AsfAGHM5om
~sHd0jDv6X
uI^EYm8s=|
....
如何使用该文件中的数据填充上面分配的数组(例如使用fgets
或fgetc
)?
答案 0 :(得分:0)
如果您的字符串长度不变,就像您的示例一样,那么您可以定义一个以BUFSIZ
作为单词最大长度的宏。 注意:不要忘记在每个字符串末尾加上 '\0'
字符。
在这种情况下,解决方案将如下所示:
// create an array of strings
char ** array = (char **)calloc(LINES, sizeof(char *));
for (size_t i = 0; i < LINES; i++) {
// allocate space for each string
array[i] = (char *)calloc(1, BUFSIZ);
// get the input
fgets(array[i], BUFSIZ, stdin);
// remove the '\n' character
// from the end of the string
array[i][strlen(array[i]) - 1] = '\0';
}