C语言读取txt文件中的字符串并以$号分隔保存在数组中,

求一个详细的程序,是用fscanf函数来做的,思路什么的就不要了,在线等

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
FILE *fp = NULL;
char buf[1024] = {0};
char *p = buf;

fp = fopen("./tt", "r+");//注:当前目录下的tt文件已存在
if(NULL == fp)
{
return 0;
}

fseek(fp, 0, SEEK_SET);

while(1 == fscanf(fp, "%s", p))
{
p = buf + strlen(buf);
*p++ = '$';
}
printf("%s ", buf);
printf("\n\r");

fclose(fp);

return 0;
}

追问

能不能解释一下,好像和我问的不太一样,我没有看出来分隔啊,

追答fseek(fp, 0, SEEK_SET); //从文件头开始读   
 
while(1 == fscanf(fp, "%s", p))//循环读取文件字符串  保存到buf  
{         
    p = buf + strlen(buf);//p 指向数组末尾         
    *p++ = '$';//存储‘$’, 后移一个     
}

追问

比如我读取一个txt文件12$123$89$654,它输出的就是12$123$89$654$,,这不对吧,我的意思是把它放到一个比如a[i]的数组,然后通过i的递增可以按顺序打下来啊

追答

我可能没明白你的意思!你能说明白一点吗?

1、你是想去除字符串中的‘$’     比如文本内容123$456$    取出后存储到数组为 123456


2、还是从文件中取字符串然后以'$'分割保存   比如文本内容123 456   取出后存储到数组为                  123$456$


还是。。。。?


我的这段代码是第二种,将文件字符串保存到数组buf,以'$'分割保存。


或者你的意思是将12 123 89 654 取出后保存到数组后,

a[1] 打印 12$

a[2] 打印 123$

a[3] 打印 89$ 

a[4] 打印 654$

如果是这样你就用下面代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 100 //数组大小

int main(void)
{
FILE *fp = NULL;
char *p[MAX];
char  buf[1024] = {0};
int i = 0, j = 0;

//打开文件
fp = fopen("./tt", "r+");
if(NULL == fp)
{
return 0;
}

//读取文件
fseek(fp, 0, SEEK_SET);
while(1 == fscanf(fp, "%s", buf))
{
j = strlen(buf);
p[i] = malloc(sizeof(char) *  j + 2);
memset(p[i], 0, (sizeof(char) *  j + 2));
strcpy(p[i], buf);
p[i][j] = '$';
p[i][j+1] ='\0';
i++;
if(i >= MAX)
{
break;
}
}

//
for(j = 0; j < i; j++)
{
printf("%s\n\r", p[j]);
}

//释放内存
 for(j = 0; j < i; j++)
 {
free(p[j]);
 }

 //关闭文件
 fclose(fp);

 return 0;
}

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答