例如:我有一个包含一些文本的文件..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].
我该怎么做?提前致谢。
您可以使用 fgets 读取每一行文本。对于读取的每一行,递增用于访问a
第一个维度(行)的计数器。对于每个读取行,您使用 strtok 迭代该行中的所有标记。对于 strtok 返回的每个标记,您应该将指针归因于a[i][j]
和 increment j
。
当然a
是指向char matriz的指针。
我没有测试它。这只是一个如何做的例子。
/* 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)
}
}
好吧,我会给你一些线索。
首先声明 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;
祝你好运!