C语言如何实现文件分割功能

C语言如何实现文件分割功能,第1张

strcat()是追加字符串的函数。

strcat(char[] a,char []b)即将第二个字符串追加到第一个字符串末尾,第二个字符串值不变,第一个变长。

你的理解是对的 但是使用有误!追加时需要保证第一个字符串在加上第二个之后依旧不能溢出。在此题中,你的a[]字符串长度在追加上".txt"之后,会溢出,建议在定义a的时候写上char a[100]保证不溢出。

文件中一行内容按照空格分割进行读取,可以采用fscanf("%s")来实现

实现过程:

定义二维字符数组,用来接收读到的每个单词

以读方式打开文件

循环读文件,将单词逐个读入数组

循环结束后,关闭文件

输出数组中的单词,以验证

参考代码:

#include <stdio.h>

int main(void)

{

FILE *fp 

int i,j

char words[100][21] //最多读100个单词,每个单词不超过20个字符

fp=fopen("data.txt", "r")

if ( fp==NULL )

{

printf("open file error\n")

return -1

}

for( i=0i<100i++ ) //循环读取,控制不超过100个

{

if ( fscanf(fp, "%20s", words[i] )!= 1 ) //控制每个单词不超过20个

break

}

fclose(fp)

for( j=0j<ij++ ) //反向输出各单词

printf( "%s ", words[j] ) 

printf("\n")

return 0

}

输入文件名叫 abc.txt 你可以改名。

输出文件名叫 aaX.txt X=0,1,2,3....

单个文件大小 one_size, 你可以 更改大小。

#include<stdio.h>

main(){

FILE *fp, *fout

char nameout[80]

int i,j,k,n

long size, one_size=1024

char *buff

// one_size=one_size * 0.1 //你可以 更改大小

fp = fopen ("abc.txt","rb")

if (fp==NULL) { printf("Error opening file")return 0}

fseek (fp, 0, SEEK_END) // non-portable

size=ftell (fp)

printf ("Size of abc.txt: %d bytes.\n",size) //得到大小

rewind(fp)

n=size/one_size

buff = (char*)malloc(sizeof(char)*one_size)

for (i=0i<ni++)

{

sprintf(nameout,"aa%d.txt",i)

fout = fopen(nameout,"wb")

k = fread (buff,1,one_size,fp)

//if (k != one_size) {printf("read err\n")return (0)}

fwrite(buff,1,one_size,fout)

fclose(fout)

printf("output in %s\n",nameout)

} // for i

j = size % one_size

if (j!=0) {

sprintf(nameout,"aa%d.txt",n)

fout = fopen(nameout,"wb")

k = fread (buff,1,j,fp)

// if (k != j) {printf("read err\n")return (0)}

fwrite(buff,1,k,fout)

fclose(fout)

printf("output in %s\n",nameout)

}

fclose (fp)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11701747.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存