|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题1:我这样编写的代码,目的是把csv格式数据读取出来,但不知道代码哪里有问题,输出的a[0][0]实际上是a[0][1],就是第一列被跳过去了,求问为什么会这样啊
问题2:如果我想把数组的类型由int改为char(数据里面有字母),这样的话代码要怎么改呢?我直接把%d和定义改成char好像不行,输出会错误 求大神指点,谢谢啦
- #include <stdio.h>
- #define hang 3
- #define lie 5
- main()
- {
- int i, j;
- FILE *fid;
- int a[hang][lie];
- char str[256], str2, str3;
- fid = fopen("test.csv", "r");
- for (i = 0; i<hang; i++){
- fscanf(fid, "%256[^,]", &str);
- for (j = 0; j<lie; j++){
- fscanf(fid, ",%d", &a[i][j]);
-
- }
- }
- printf("%d\n", a[1][0]);
- }
复制代码
- #include <stdio.h>
- #include <string.h>
- split(char s[] , int d[])
- {
- int k , m ;
- for(m = 0 , k = 0 , d[m ++] = 0 ; s[k] ; k ++) if(s[k] == ',') {
- s[k] = '\0' ;
- d[m ++] = k + 1 ;
- }
- return m ;
- }
- main()
- {
- char s[1026] ;
- int d[64] , k , m ;
- FILE * fp ;
- if(fp = (fopen("test.csv" , "r"))) {
- fgets(s , 1024 , fp) ;
- while(! feof(fp)) {
- s[strlen(s) - 1] = '\0' ;
- m = split(s , d) ;
- printf("%s" , & s[d[0]]) ;
- for(k = 1 ; k < m ; k ++) printf(" , %s" , & s[d[k]]) ;
- printf("\n") ;
- fgets(s , 1024 , fp) ;
- }
- fclose(fp) ;
- } else {
- fprintf(stderr , "错误:输入文件不存在!\n") ;
- fprintf(stderr , "\n") ;
- }
- }
复制代码
|
|