|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wuliaaa 于 2019-12-15 20:56 编辑
问题:现在有一个文本,里面有像表格一样的数据像这样
weer 1234awf 2331
wwqeq q3231 24e3f
213yf 214 wqf
213g wdeqyq 213e
要把这一些数据,按照char字符串读取并存入二维数组a[][], 例如a[0][0]=weer, a[0][1]=1234awf这样,这样的代码要怎么写啊?(不是要print是要为后面的数据处理做准备)
我自己写的代码好像一直读取不了,没办法写入二维数组,都是换行符
- #include <stdio.h>
- #include <stdlib.h>
- #define hang 10
- #define lie 6
- int main()
- {
- int i, j;
- FILE *fid;
- char a[hang][lie] = { 0 };
- char str[256], str2, str3;
- fid = fopen("data.txt", "a+");
- for (i = 0; i < hang; i++){
- fscanf(fid, "%256[^,]", &str);
- for (j = 0; j < lie; j++){
- fscanf(fid, "%s ", &a[i][j]);
- }
- }
- }
复制代码
求问这样代码要怎么设计啊 或者我自己编写的错误代码要怎么修改才能达成这个目的呢?数据用txt或csv都可以,谢谢啦
本帖最后由 superbe 于 2019-12-15 22:49 编辑
测试代码如下。在你的代码上做了修改,可以实现要求的功能。我是在上面示例的4行3列的txt文件上测试的。
假定文件开始没有特殊行(比如空行),根据实际文件内容修改吧。
- /* data.txt
- weer 1234awf 2331
- wwqeq q3231 24e3f
- 213yf 214 wqf
- 213g wdeqyq 213e
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <malloc.h>
- #include <string.h>
- #define hang 4 //4行
- #define lie 3 //3列
- int main()
- {
- int i, j;
- FILE *fid;
- char *a[hang][lie] = { 0 };
- char str[256];
- fid = fopen("data.txt", "r");
-
- /* 读入到数组 */
- for (i = 0; i < hang; i++) {
- for (j = 0; j < lie; j++) {
- fscanf(fid, "%s", str);
- a[i][j] = (char *)malloc(strlen(str)+1);
- strcpy(a[i][j], str);
- }
- fscanf(fid, "%256[^\n]", str);
- }
- /* 显示数组内容(验证) */
- for (i = 0; i < hang; i++){
- for (j = 0; j < lie; j++) {
- printf("%s ", a[i][j]);
- }
- printf("\n");
- }
- /* 释放内存 */
- for (i = 0; i < hang; i++) {
- for (j = 0; j < lie; j++) {
- free(a[i][j]);
- }
- }
- return 0;
- }
复制代码
|
|