C语言创建一个文件,写入数据并换行,再依次读取每行的数据,将读取的行数据以一定的格式命名为另一文件的文件名


#include <stdio.h>

#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <dir.h>

//*********************************
//字符串连接函数
char *catstr(char *a,char *b)
{
  char *p =a, *q=b;
  while(*p) p++;
  while(*q) *p++ =*q++;
  *p ='\0';
  return a;
}
//***********************************
//读取SN.txt的每行字符串
char *ReadSpeacialLine(int WhichLine)
{
char StrLine[1024];
FILE *fp;
int CurrentIndex = 0;
char filename[] = "demo.TXT";
if((fp = fopen(filename, "r")) == NULL)
{     
printf("Open file SN.txt Error\n");
return NULL;
}


while(!feof(fp))
{
if(CurrentIndex == WhichLine - 1)
{
fgets(StrLine, 1024, fp);
//printf("%s", StrLine);
if ( (StrLine[strlen(StrLine)-1]) == '\n' )
StrLine[strlen(StrLine)-1] ='\0';
return StrLine;
}
fgets(StrLine, 1024, fp);
CurrentIndex++;
}
fclose(fp);
return NULL;
}
//***************************************

int main(void)
{
char str[20];
FILE *fp;
FILE *fpread;
char readsn[15];
int i, l;
char a1[7],a2[3];
char filename[14];

fp = fopen ("demo.txt","wt+");
if(fp == NULL)
{
printf("create file demo.txt failed!\n");
exit(1);
}
//循环输入SN,存入文件demo.txt
for( i =0 ; i <3;i++)
{
printf("Please input SN:\n");
//fgets(str,11,stdin);
gets(str);
printf("%d\n",strlen(str));
           //判断SN是否为10位
   while( 10 !=strlen(str))
{
 printf("Please input SN again:\n");
 //fgets(str,11,stdin);
 gets(str);
 printf("%d\n",strlen(str));
}

//将输入的小写字母转换为大写
for (l = 0; l <=strlen(str); l++)
{
if(str[l]>='a' && str[l]<='z')
str[l] -= 32;
}
fputs(str,fp);
fputs("\n",fp);
}

fclose(fp);
/*
//读取文件的第一行
fpread=fopen("demo.txt","r");
fgets(readsn,11,fpread);
printf("%s\n",readsn);
fclose(fpread);
*/
    
   //读取文件的每一行,并去掉换行符号
for (i = 1; i<=3; i++)
{

printf("%s\n",ReadSpeacialLine(i));

//分割为前7位

strncpy(a1,ReadSpeacialLine(i),7);
                *(a1+7)='\0';
printf("%s\n",a1);
system("pause");

//分割为后3位

strncpy(a2,ReadSpeacialLine(i)+7,strlen(ReadSpeacialLine(i))-7+1);
               *(a2+strlen(ReadSpeacialLine(i))-7)='\0';
  printf("%s\n",a2);
system("pause");
//链接为需要的格式1234567.890
sprintf(filename,"%s.%s",a1,a2);
printf("%s\n",filename);
system("pause");

    }
return 0;

}


/*BC 编译过验证OK*/

C语言创建一个名为“hello.docx”的文件写入特定内容,然后打开文件读取内容,这涉及到文件操作和格式处理。需要注意的是,.docx文件是微软Office Word的文档格式,属于一个复杂的压缩包,通常包含XML和二进制文件C语言标准库并不直接支持创建读取.docx文件,因此需要依赖额外的库或者工具。 一种方法是使用第三方库如libreoffice的API来创建和编辑.docx文件,但这种方法较为复杂。另一种更简单的方法是创建一个文本文件,以.docx扩展名保存,但这种方法只是伪装成.docx格式,并不能真正创建一个可以被Office软件直接打开的Word文档。 这里提供一个简化的例子,通过C语言创建一个文本文件命名为"hello.docx",写入内容"4562859",然后再次打开该文件读取内容。这种方法创建文件实际上是一个文本文件,并不是真正的.docx文件。 ```c #include <stdio.h> #include <stdlib.h> int main() { FILE *file; // 创建写入内容 file = fopen("hello.docx", "w"); if (file == NULL) { perror("无法创建文件"); return EXIT_FAILURE; } fprintf(file, "4562859\n"); fclose(file); // 打开并读取内容 file = fopen("hello.docx", "r"); if (file == NULL) { perror("无法打开文件"); return EXIT_FAILURE; } char ch; while ((ch = fgetc(file)) != EOF) { putchar(ch); } fclose(file); return EXIT_SUCCESS; } ``` 这段代码演示了如何使用C语言文件的基本操作。首先,以写入模式("w")打开文件写入内容"4562859",随后关闭文件。接着,再次以读取模式("r")打开文件,逐个字符读取并输出到标准输出,最后关闭文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysh05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值