共行或列总使用指针例如:我有一个包含一些text..like我怎么能指出在C
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].
我该怎么办? 在此先感谢。
共行或列总使用指针例如:我有一个包含一些text..like我怎么能指出在C
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来阅读每一行文本。对于每行读取,您增加用于访问第一个内存(行)的计数器。对于每个读取行,您使用strtok遍历行中的所有标记。对于每个令牌strtok返回,您应该将指针归属为a[i][j]
并且增量为j
。
当然,a
是指向char matriz的指针。
即使它们被空间以外的其他字符分隔,您仍然可以在调用strtok时列出所有可能的字符 – fayyazkl
好吧,我会给你一些线索。
首先声明a
作为
char a[2][3];
此变量可以这样使用:
int main()
{
char a[2][3];
a[1][1]='a';
printf("%c",a[1][1]);
}
然后使用fscanf(f, "%c", a[][]);
从文件中读取,看到网上的教程和手册页本。
另一种选择是做dinamically:
声明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));
这给你你的矩阵。像第一个案例一样使用它。
问题的情况下读取字符串,所以尝试做同样的这个结构代替焦炭
typedef struct string {
char cadena[6];
}myString;
祝您好运!
我还没有测试过。这只是一个例子,如何去做。
/* 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)
}
}
所有行都恰好有4个单词? – none