0

例如:我有一个包含一些文本的文件..like

my name is sunny
i am a student

我想从文件中读取并存储它,

a[0][0]=my,a[0][1]=name,a[0][2]=is,a[0][3]=sunny,

a[1][0]=i,a[1][1]=am,a[1][2]=a,a[1][3].

我该怎么做?提前致谢。

4

3 回答 3

1

您可以使用 fgets 读取每一行文本。对于读取的每一行,递增用于访问a第一个维度(行)的计数器。对于每个读取行,您使用 strtok 迭代该行中的所有标记。对于 strtok 返回的每个标记,您应该将指针归因于a[i][j]和 increment j

当然a是指向char matriz的指针。

于 2012-10-10T19:31:20.413 回答
0

我没有测试它。这只是一个如何做的例子。

/* not real value; see limits.h header if you are in POSIX or equivalento to your env */
#define LINE_MAX 128
char line[LINE_MAX + 1];
char contents[MAX_LINES][MAX_WORDS];
char * token;
/* read file line by line */
while(fgets(line, LINE_MAX, fp) != NULL) {
 /* split words by white-space */
 token = strtok(buffer, " ");
 while(token != NULL) {
   // token is "my", after "name" and and so on.
   // store it into contents array. you can use strcpy() or strncpy() (more safe) 
 }
}
于 2012-10-10T20:34:56.540 回答
0

好吧,我会给你一些线索。

首先声明 a

char a[2][3];

这个变量可以这样使用:

int main()
{
   char a[2][3];

   a[1][1]='a';
   printf("%c",a[1][1]);

}

然后用于 fscanf(f, "%c", a[][]); 从文件中读取,请参阅互联网教程和手册页。

其他选择是动态地进行:

声明 a 为:

char **a;

之后,您像这样分配内存:

a = (char**)malloc(2 * sizeof(char*));  //Two times the size of char

现在你有了第一个数组的内存,我们想在数组的每个空间中“插入”另一个数组。像矩阵一样思考它。

for(i=0; i<3; i++)
    a[i] = (char*)malloc(3 * sizeof(char));

这给了你你的矩阵。像第一种情况一样使用它。

问题的情况是读取字符串,所以尝试用这个结构而不是 char 做同样的事情

typedef struct string {
    char cadena[6];
}myString;

祝你好运!

于 2012-10-10T19:49:39.090 回答