2024-11-29 20:22:39
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE 1024
int main(){
FILE *fp=NULL;
fp = fopen("test.csv","r");
char a[1024];
char *p;
char *q;
int len;
int i = 0;
int j = 0;
fseek(fp,0L,0);
while(fgets(a,MAX_LINE,fp) != NULL)
{
p = &a[0];
q = &a[0];
//printf("%s\n", a);
while(*p!='\0'){
while(*p !=','&&*p!='\0'&& *p != '\r' && *p != '\n'){
p++;
}
char *part = (char *)malloc(100 * sizeof(char));
int length = p - q;
if (length>0){
printf("%d",length);
memcpy(part, q, length);
part[length]= '\0';
printf("%s\n",part);
}
p = p+1;
q = p;
}
}
return 0;
}
开头输出了一个乱码,大神你这太复杂了我看不懂呀
2024-11-29 12:04:32
不知道你要哪种格式的
厉害啊大神,还有你这是已经存到数组里面去了吗?我需要把每行的数据放到数组里面去呢,你这个程序怎么改成每一行的数据读完后就放到数组里面,然后换行继续读下一行的,直到结束
存数组
厉害啊,我刚试了下,没有毛病耶;另外while循环里面我把EOF判断换成‘\n’后就可以只读当前一行对吧,那我想在while之前再加个循环,用来读取下一行的数据,因为我不能一次性读到文件末尾,我应该怎么加循环呢?就比如要读5行数据,就循环5次,第一次while读到‘\n’后就结束,再读第二行。。。。。这样
厉害啊,我刚试了下,没有毛病耶;另外while循环里面我把EOF判断换成‘\n’后就可以只读当前一行对吧,那我想在while之前再加个循环,用来读取下一行的数据,因为我不能一次性读到文件末尾,我应该怎么加循环呢?就比如要读5行数据,就循环5次,第一次while读到‘\n’后就结束,再读第二行。。。。。
还有每行数据最后若有连续的逗号的话,数组最后一位就是0,这个怎么解决呀
大神您好,我刚运行了你的代码,代码没问题,就是第一次读取文件开头的数据也变成0了,但是最后一位数组为0的情况没有了。然后我又在for循环5次里面的开头加了一个把k置为0,这样就不会把上一次循环读取的数据也存到数组里面,加之前和之后的截图如下:
就是开头有个0很奇怪,看了代码,不知道在哪里改,望大神再帮忙看下,谢谢
我没改代码,只把csv内容换成了你的
没看到开头有0 什么的
啊,这就奇怪了,我怎么换内容第一位都是0,会不会跟我用的软件有关,我用的是codeblocks
跟编译器应该没关系
我找到问题了,是csv文件的问题,重新建一个就好了,谢谢啊
2024-11-29 16:55:09
用你的程序跑了下,输出的还是没有自动换行呀,最后多了个0:0
你是要对应csv文件的每一行进行输出?从需求上输出是一维数组,为何要换行?
换行的处理方法就完全不同了。
需要fgets取出每一行,再把每一行读入数组。
是啊,就是要读一行到数组里面输出,然后换行继续读下一行的,直到结束
那么需要换一个方案才行,你这个程序完全没用:
2024-11-29 16:23:59