如何在c中存储固定长度的字符串

时间:2016-09-28 04:43:30

标签: c arrays string

我想在文本文件中读取一些固定长度的字符串并将它们存储在一个数组中。 我读取字符串的方式是fscanf(fp,"%c",& char []);

但是,由于数据是由空格分隔的,我希望数组索引指示每个字符串而不是每个字符。

我该怎么做?我应该使用call amrit一定长度而不是fgets()吗? 感谢

fgetc()

我打印矩阵以检查扫描是否成功。 enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

使用fgets()

从文件读取的简单示例
#include <stdio.h>
#include <stdlib.h>

#define LINE_LENGTH 6

int main(int argc, char** argv)
{
  int i = 0;
  FILE *file_ptr;
  char *string=(char*)calloc(LINE_LENGTH,sizeof(char));

  file_ptr = fopen("file.txt", "r");

  while(1)
    {
      if(fgets(string, LINE_LENGTH, file_ptr) == NULL)
         break;
      fgetc(file_ptr);
      printf("\nline[%d] = %s\n", i+1, string);
      i++;
    }

  fclose(file_ptr);

  return 0;
}

file.txt的

12344 45678 99870 33389 11234

答案 1 :(得分:0)

确定rowcol时 按以下方式分配:

char (*jz)[col][keyLength] = malloc(row * col * keyLength);//meant char jz[row][col][keyLength]

从文件中读取:

for(i = 0; i < row; ++i){
    for(j = 0; j < col; ++j){
        fscanf(fp, "%s", jz[i][j]);
    }
}

打印矩阵:

for(i = 0; i < row; ++i){
    for(j = 0; j < col; ++j){
        if(j)
            putchar(' ');
        printf("%s", jz[i][j]);
    }
    putchar('\n');
}