【C语言】—— 文件操作(下)

  

前言:

  
  
  在 【C语言】—— 文件操作(上) 一文中,我们对文件有了一个简单的了解,并学会了如何打开和关闭文件,下面就让我们一起来学学如何对文件进行读写吧。
  
  

五、文件的顺序读写

5.1、 顺序读写函数介绍

函数名功能适用于
fgetc字符输入函数所有输入流
fputc字符输出函数所有输出流
fgets文本行输入函数所有输入流
fputs文本行输出函数所有输出流
fscanf格式化输入函数所有输入流
fprintf格式化输出函数所有输出流
fread二进制输入文件
fwrite二进制输出文件

  注:上面说的适用于所有输入流一般指适用于标准输入流和其他输入流(如文件输入流);所有输出流一般指适用于标准输出流和其他输出流(如文件输出流)

  下面我们对上述函数一一进行介绍
  

5.2、 f p u t c fputc fputc 函数

在这里插入图片描述

  • 函数功能将一个字符写入流中,这个流其实就是文件流
  • 函数参数
    • i n t int int c h a r a c t e r character character要写入的字符,字符的本质就是 A S C I I ASCII ASCII 码值,因此这里参数类型为 i n t int int 没有问题
    • F I L E FILE FILE * s t r e a m stream stream :指向要写入文件的文件指针
  • 返回类型:返回类型是 int:当写入成功,返回写入的值,当写入失败,返回EOF(-1)
      

函数使用:

#include<stdio.h>int main()
{FILE* pf = NULL;//打开文件pf = fopen("test.txt", "w");//文件操作if (NULL == pf){perror("fopen fail");return 1;}//写文件fputc('a', pf);fputc('b', pf);fputc('c', pf);//写入26个字母char ch = 0;for (ch = 'a'; ch <= 'z'; ch++){fputc(ch, pf);}//关闭文件fclose(pf);pf = NULL;
}

在这里插入图片描述

  这样,字符就写好了。
  
  当写入字符时,还有一些细节需要注意:当一个文件打开时,最开始其实是有一个光标指向第一个位置,每当用 f p u t c fputc fputc 函数写入一个字符光标则后退一格。光标是用来维护此时此刻我们这个文件写到哪的,而且是按照一定的顺序往后走的,因此叫做顺序读写

  

5.3、 f g e t c fgetc fgetc 函数

在这里插入图片描述

  • 函数功能:从流(文件)中获取一个字符
  • 返回值:返回类型为 i n t int int 。如果成功,就会将读到的字符返回,如果读取失败或者遇到文件末尾返回EOF(-1)
    • 为什么返回类型是 int 呢?正是因为它会返回两种类型的值:字符的 A S C I I ASCII ASCII码 值EOF;如果返回类型为 char,则 EOF 无法返回
        

函数使用:

#include<stdio.h>int main()
{FILE* pf = NULL;//打开文件pf = fopen("test.txt", "r");//文件操作if (NULL == pf){perror("fopen fail");return 1;}//读文件int ch = 0;while ((ch = fgetc(pf)) != EOF){printf("%c ", ch);}printf("\n");//关闭文件fclose(pf);pf = NULL;
}

运行结果:

在这里插入图片描述

  而同样,以只读的方式打开文件,刚开始光标是在第一个位置,即指向 a a a每读一个字符,光标向后退一位

  

5.4、 f p u t s fputs fputs 函数

在这里插入图片描述

  • 函数功能将 str 字符串写入文件流中,直至遇到 ‘\0’ 停止(‘\0’不会被写入)

   注:多次调用该函数,并不会实现主动换行,要想换行应主动输入‘\n’
  
函数使用:

#include<stdio.h>int main()
{//打开文件FILE* pf = NULL;pf = fopen("test.txt", "w");if (NULL == pf){perror("fopen fail");return 1;}//写文件fputs("hello", pf);fputs("world\n", pf);fputs("hello csdn\n", pf);//关闭文件fclose(pf);pf = NULL;return 0;
}

运行结果:
在这里插入图片描述
  我们可以看到,加了换行符后,文件的光标是直接落到下一行的。

  

5.5、 f g e t s fgets fgets 函数

在这里插入图片描述

  • 函数功能从流中最多读取 num 个字符,并放在 str 所指向的空间中
    • 函数读 n u m num num 个字符,但是最多只能读取 n u m num num - 1个,因为最后一个位置函数会自己加上 ‘\0’
    • 该函数不会换行读取。当 n u m num num 大于字符数时,遇到换行符 ‘\n’,将 ‘\n’ 读取后,不再往下读取,自己加上 ‘\0’ 后停止。
    • 当函数读取成功,返回的是目标空间的地址;读取失败则返回空指针(NULL)

  
函数使用:

#include<stdio.h>int main()
{//打开文件FILE* pf = NULL;pf = fopen("test.txt", "r");if (NULL == pf){perror("fopen fail");return 1;}//读文件char arr1[10] = "xxxxxxxxx";fgets(arr1, 8, pf);char arr2[10] = "xxxxxxxxx";fgets(arr2, 8, pf);//关闭文件fclose(pf);pf = NULL;return 0;
}

运行结果:

在这里插入图片描述

  

5.6、 f p r i n t f fprintf fprintf 函数

在这里插入图片描述

  
  该函数的功能是将数据以格式化的形式写入流中(以文本的形式)
  
  其实, f p r i n t f fprintf fprintf 函数 p r i n t f printf printf 函数是非常相像的,让我们来对比一下
  

在这里插入图片描述

  
  他们的区别仅仅是第一个参数的有无而已,其他都是一模一样的,所以你会用 p r i n t f printf printf你就会用 f p r i n t f fprintf fprintf
  
  多的一个参数是什么呢?是文件流,你需要将数据输出到的那个文件流
  

#include<stdio.h>struct S
{char name[20];int age;float score;
};
int main()
{struct S s = { "张三", 20, 75.5f };//打开文件FILE* pf = NULL;pf = fopen("test.txt", "w");if (NULL == pf){perror("fopen fail");return 1;}//写文件fprintf(pf, "%s %d %f", s.name, s.age, s.score);//关闭文件fclose(pf);pf = NULL;return 0;
}

运行结果:
在这里插入图片描述
  

5.7、 f s c a n f fscanf fscanf 函数

在这里插入图片描述

  
  该函数的功能是从文件流中读取格式化的数据。
  
  不难发现, f s a n f fsanf fsanf s c a n f scanf scanf 函数很像,我们来对比一下

  

在这里插入图片描述

  
  同 f p r i n t f fprintf fprintf 一样, f s c a n f fscanf fscanf s c a n f scanf scanf 只是相差一个参数而已,你会用 s c a n f scanf scanf 自然也就会用 f s c a n f fscanf fscanf 函数,第一个参数即是你所要读取的文件流
  

#include<stdio.h>struct S
{char name[20];int age;float score;
};
int main()
{struct S s = { 0 };//打开文件FILE* pf = NULL;pf = fopen("test.txt", "r");if (NULL == pf){perror("fopen fail");return 1;}//读文件fscanf(pf, "%s %d %f", s.name, &(s.age), &(s.score));//printf("%s %d %.2f\n", s.name, s.age, s.score);fprintf(stdout, "%s %d %.2f\n", s.name, s.age, s.score);//关闭文件fclose(pf);pf = NULL;return 0;
}

  
运行结果:

在这里插入图片描述

  注意看,上述代码用了 f p r i n t f fprintf fprintf 来将数据打印在屏幕上

  还记得最开始的表格中, f p r i n t f fprintf fprintf 最后一列写的是所有输出流吗?这所有输出流就包括了文件流标准输出流,既然 f p r i n t f fprintf fprintf 可以输出到文件中,那么自然也就可以输出到屏幕中,完成 p r i n t f printf printf 一样的功能。

  而同理,前面讲的 f p u t c fputc fputc f g e t s fgets fgets f s c a n f fscanf fscanf 等函数也可以从标准输入(输出)流中获取(输出)数据。

  

5.8、 p r i n t f / f p r i n t f / s p r i n t f printf/fprintf/sprintf printf/fprintf/sprintf 函数对比

  
通过我们前面的学习,我们已经知道了 p r i n t f printf printf f p r i n t f fprintf fprintf 函数的作用:

  • p r i n t f printf printf:把数据以格式化的形式打印在标准输出流
  • f p r i n t f fprintf fprintf : 把数据以格式化的形式打印在 指定的输出流

那么 s p r i n t f sprintf sprintf 函数又是作什么的呢?我们一起来看看

在这里插入图片描述

  
  该函数的作用是:将数据以格式化的形式写到字符串。其实就是把格式化的数据转换成字符串
  

#include<stdio.h>struct S
{char name[20];int age;float score;
};
int main()
{struct S s = { "张三", 20, 75.5f };char buf[50] = { 0 };sprintf(buf, "%s %d %f", s.name, s.age, s.score);printf("%s\n", buf);return 0;
}

运行结果:
在这里插入图片描述
  该代码完全是以 %s 的形式打印的,说明数据已经完全转换成字符串了。

  

5.9、 s c a n f / f s c a n f / s s c a n f scanf/fscanf/sscanf scanf/fscanf/sscanf 函数对比

  同样,通过我们前面的学习,我们已经知道了 s c a n f scanf scanf f s c a n f fscanf fscanf 函数的作用:

  • s c a n f scanf scanf:从 标准输入流 中读取格式化的数据
  • f s c a n f fscanf fscanf:从 指定输入流 中读取格式化的数据

  那 s s c a n f sscanf sscanf 的功能又是什么呢?学习了 s p r i n t f sprintf sprintf ,我们猜测,其应该是从字符串中读取格式化数据,是不是呢?我们一起来看看
  

在这里插入图片描述

  
函数功能从字符串中读取格式化数据
  

#include<stdio.h>struct S
{char name[20];int age;float score;
};
int main()
{struct S s = { "张三", 20, 75.5f };char buf[50] = { 0 };sprintf(buf, "%s %d %f", s.name, s.age, s.score);struct S a = { 0 };sscanf(buf, "%s %d %f", s.name, &(s.age), &(s.score));printf("%s %d %f\n", s.name, s.age, s.score);return 0;
}

运行结果:

在这里插入图片描述

  
  

5.10、 f w r i t e fwrite fwrite 函数

在这里插入图片描述

  • 函数功能:以二进制的形式将内存块中的数据入文件中
  • 参数介绍
    • c o n s t const const v o i d void void * p t r ptr ptr p t r ptr ptr 是指向要写入数据的数组的指针
    • s i z e size size_ t t t s i z e size size:表示要写入的每个元素的大小
    • s i z e size size_ t t t c o u n t count count:表示要写入元素的个数

  
下面我们直接上代码:

#include<stdio.h>int main()
{int arr[] = { 1,2,3,4,5 };int sz = sizeof(arr) / sizeof(arr[0]);FILE* pf = NULL;pf = fopen("test.txt", "wb");if (NULL == pf){perror("fopen fail");return 1;}fwrite(arr, sizeof(arr[0]), sz, pf);fclose(pf);pf = NULL;return 0;
}

  
我们以二进制的方式打开:

在这里插入图片描述

  

5.11、 f r e a d fread fread 函数

在这里插入图片描述

  该函数的作用是:以二进制的形式读取数据到内存中

  我们可以看到,这函数的参数与 f w r i t e fwrite fwrite 是大同小异的,这里就不一一介绍了,我们直接上代码

#include<stdio.H>int main()
{int arr[5] = { 0 };FILE* pf = NULL;pf = fopen("test.txt", "rb");if (NULL == pf){perror("fopen fail");return 1;}fread(arr, sizeof(arr[0]), 5, pf);for (int i = 0; i < 5; i++){printf("%d ", arr[i]);}printf("\n");fclose(pf);pf = NULL;return 0;
}

运行结果:

在这里插入图片描述

  但是,上面代码是我提前知道了总共的数据个数,当我不知道数据具体个数是又该怎么办呢?

  这里,我们需要知道 f r e a d fread fread 函数的返回值,该函数的返回值是读取到的数据的个数。这时,当我要求读 7 个数据,而返回值是 5 时,说明数据读完了。

  上面的代码我们可以做如下修改:

#include<stdio.h>int main()
{int arr[5] = { 0 };FILE* pf = NULL;pf = fopen("test.txt", "rb");if (NULL == pf){perror("fopen fail");return 1;}int i = 0;while (fread(arr + i, sizeof(arr[0]), 1, pf)){printf("%d ", arr[i]);i++;}printf("\n");fclose(pf);pf = NULL;return 0;
}

  
  

六、文件的随机读写

  前面我们所学习到的函数都是顺序读写,光标是依次往后移动。那能不能做到随机读写呢,即我想在哪里读写就在哪读写,指那打那。

  当然是可以的,下面让我们一起来学习。
  

6.1、 f s e e k fseek fseek 函数

在这里插入图片描述

  • 功能:根据文件指针的位置和偏移量来定位文件指针(光标)
  • 参数介绍
    • l o n g long long i n t int int o f f s e t offset offset:相对于起始位置的偏移量,可正可负
    • i n t int int o r i g i n origin origin起始位置

起始位置选择:

常量所指位置
SEEK_SET文件的起始位置
SEEK_CUR当前光标位置
SEEK_END文件结尾

  
  这个函数有什么用呢?比如文件中有 a b c d e f g abcdefg abcdefg 的数据,当前光标指向 a a a,而我想直接读 e e e,这时就可以用该函数移动光标啦。
  

在这里插入图片描述

例子:

#inclu<stdio.h>int main()
{FILE* pf = NULL;pf = fopen("test.txt", "r");if (NULL == pf){perror("fopen fail");return 1;}char ch = 0;ch = fgetc(pf);printf("%c\n", ch);fseek(pf, 3, SEEK_CUR);ch = fgetc(pf);printf("%c\n", ch);fclose(pf);pf = NULL;return 0;
}

运行结果:

在这里插入图片描述

  
  

6.2、 f t e l l ftell ftell 函数

在这里插入图片描述

f t e l l ftell ftell 函数会返回文件指针(光标) 相对于文件起始位置的 偏移量

  这里,我们想:如果我们让光标读到文件末尾,在返回偏移量,是不是就能知道文件的长度呢?答案是肯定的。
  
例子:

#includ<stdio.h>int main()
{FILE* pf;long size;pf = fopen("test.txt", "rb");if (NULL == pf)perror("Error opening file");fseek(pf, 0, SEEK_END); // non-portablesize = ftell(pf);fclose(pf);printf("Size of test.txt: %ld bytes.\n", size);return 0;
}

  
  

6.3、 r e w i n d rewind rewind 函数

在这里插入图片描述

   r e w i n d rewind rewind 函数可以让文件指针回到起始位置

  走的太远,别忘了回头路

例子:

#include<stdio.h>int main()
{int n;FILE* pf;char buffer[27];pf = fopen("test.txt", "w+");for (n = 'A'; n <= 'Z'; n++){fputc(n, pf);}rewind(pf);fread(buffer, 1, 26, pf);fclose(pf);buffer[26] = '\0';printf(buffer);return 0;
}

  
  

七、文件读取结束的判定

7.1、 被错误使用的 f e o f feof feof

  
  很多人都以为 f e o f feof feof函数是用来直接判断文件读取是否结束。其实这是大错特错的
   f e o f feof feof 的作用是:当文件读取结束时,判断读取结束的原因是否是因为:遇到文件末尾结束

  现在假设文件读取结束了,但是是什么原因读取结束的呢?

  1. 有可能遇到文件末尾
  2. 读取的时候发生了错误

   f e o f feof feof 函数是判断是否是因为遇到文件末尾而结束的。
  而还有个函数叫 f e r r o r ferror ferror 是用来判断是否是因为遇到错误而读取结束的
  

  其实在我们打开一个流时,会有两个标记值

  1. 是否遇到文件末尾
  2. 是否发生错误
      

  当读文件的过程中确实是遇到文件末尾了,就会将第一个值标记;遇到错误就会将第二个值标记
   f e o f feof feof是用来检测第一个标记的; f e r r o r ferror ferror是用来检测第二个标记

f e o f feof feof 函数:当文件确实是因为读取到文件末尾而结束时,返回一个非零值,反之返回 0
  
  

7.2、如何判断文件读取结束

  那么如何来判断文件是否读取结束呢?其实在前面结束各个函数时已经顺便介绍了:通过函数的返回值进行判断!
  

(1)文本文件判断

函数名正常读取返回值读取结束或遇到错误的返回值
fgetc返回读取到的字符的ASCII码值EOF
fgets返回目标空间的地址NULL

  

(2)二进制文件判断

  二进制文件用 f r e a d fread fread 进行读取, f r e a d fread fread 返回值是其读取到的个数。当其返回值小于实际要读取的个数时,表示文件读取结束

  

八、 文件缓冲区

  我们想一个问题:当我们想往文件中存 26 个字母,这 26 个字母是直接从程序(内存)中存到文件(硬盘)中的吗?
  其实不是的。

  ANSI C 标准采用 “缓冲文件系统” 处理的数据文件的,所谓缓冲文件系统指的是系统自动在内存中为程序中为每一个正在使用的文件开辟一块“文件缓冲区”

  从内存向磁盘输出数据会先送达内存中的缓冲区装满缓冲区主动刷新缓冲区才将数据送到磁盘上。

  如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区或刷新缓冲区),然后在从缓冲区逐个地将数据送到程序数据区(程序变量等)。

  缓冲区的大小根据C编译系统决定的。

在这里插入图片描述

  那为什么要有文件缓冲区呢?

  其实,当我们向文件中输入输出数据时,相关函数会调用操作系统相关接口;这时如果写一个字符就调用一次操作系统,是不是效率太低,并且我们的操作系统上面可不止跑着一个程序,这时你一直打扰操作系统,操作系统就没法干活了。
  应用缓冲区,在缓冲区攒够一定数据再一次性全部录进,效率就会提升很多

  下面,我们通过一段代码验证缓冲区的存在:

#include<stdio.h>
#include <windows.h>
//VS2019 WIN11环境测试
int main()
{FILE* pf = fopen("test.txt", "w");fputs("abcdef", pf);//先将代码放在输出缓冲区printf("睡眠10秒-已经写数据了,打开test.txt⽂件,发现⽂件没有内容\n");Sleep(10000);printf("刷新缓冲区\n");fflush(pf);//刷新缓冲区时,才将输出缓冲区的数据写到⽂件(磁盘)//注:fflush 在⾼版本的VS上不能使⽤了printf("再睡眠10秒-此时,再次打开test.txt⽂件,⽂件有内容了\n");Sleep(10000);fclose(pf);//注:fclose在关闭⽂件的时候,也会刷新缓冲区pf = NULL;return 0;
}

  这里我们需要注意:

  因为有文件冲区的存在,C语言在操作文件的时候,需要做刷新缓冲区或者在文件操作结束的时候关闭文件

  如果不做,可能导致读写文件的问题
  
  
  
  


  好啦,本期关于文件操作的知识就介绍到这里啦,希望本期博客能对你有所帮助。同时,如果有错误的地方请多多指正,让我们在C语言的学习路上一起进步!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/368603.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络在机器学习中的应用:手写数字识别

机器学习是人工智能的一个分支&#xff0c;它使计算机能够从数据中学习并做出决策或预测。神经网络作为机器学习的核心算法之一&#xff0c;因其强大的非线性拟合能力而广泛应用于各种领域&#xff0c;包括图像识别、自然语言处理和游戏等。本文将介绍如何使用神经网络对MNIST数…

2024亚太杯中文赛数学建模选题建议及各题思路来啦!

大家好呀&#xff0c;2024年第十四届APMCM亚太地区大学生数学建模竞赛&#xff08;中文赛项&#xff09;开始了&#xff0c;来说一下初步的选题建议吧&#xff1a; 首先定下主基调&#xff0c; 本次亚太杯推荐大家选择B题目。C题目难度较高&#xff0c;只建议用过kaiwu的队伍…

怎样将word默认Microsoft Office,而不是WPS

设置——>应用——>默认应用——>选择"word"——>将doc和docx都选择Microsoft Word即可

PE文件学习

一、介绍 PE文件&#xff0c;即Portable Executable文件&#xff0c;是一种标准的文件格式&#xff0c;主要用于微软的Windows操作系统上。这种格式被用来创建可执行程序&#xff08;如.exe文件&#xff09;、动态链接库&#xff08;.DLL文件&#xff09;、设备驱动&#xff0…

苹果电脑虚拟机运行Windows Mac环境安装Win PD19虚拟机 parallels desktop19虚拟机安装教程免费密钥激活

在如今多元的数字时代&#xff0c;我们经常需要在不同的操作系统环境下进行工作和学习。而对于 Mac 用户来说&#xff0c;有时候需要在自己的电脑上安装 Windows 操作系统&#xff0c;以体验更多软件及功能&#xff0c;而在 Mac 安装 Windows 虚拟机是常用的一种操作。下面就来…

Codeforces Round 955 (Div. 2, with prizes from NEAR!)(A~C题解)

这场比赛怎么说呢&#xff0c;一开始打的还算好&#xff0c;能进前1000&#xff0c;但是后面就被卡住了&#xff0c;这个确实没办法水平还是不够&#xff0c;学过的还是没想起来&#xff0c;后面继续练 A. Soccer 题解&#xff1a;水题一个&#xff0c;想要在过程中出现平局的…

使用 iconfont.ttf文件保存多个图标文件,并且像文字一样使用代码绘制出来

先看演示效果 这里的多个图标其实是存储在 iconfont.ttf文件中 这个文件里面的图标对应的编码 显示代码 void CMFCApplication3Dlg::OnBnClickedOk() {// 加载字体文件CString fontPath = _T("C:\\Users\\35497\\Desktop\\test\\MFCApplication3\\font\\iconfont.ttf&qu…

pytorch中的contiguous()

官方文档&#xff1a;https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html 其描述contiguous为&#xff1a; Returns a contiguous in memory tensor containing the same data as self tensor. If self tensor is already in the specified memory forma…

mongdb学习与使用

1. 基础概念 MongoDB简介&#xff1a; MongoDB是一个基于文档的NoSQL数据库&#xff0c;具有高性能、高可用性和易扩展性。数据存储在类似JSON的BSON格式中。 基本术语&#xff1a; Database&#xff08;数据库&#xff09;&#xff1a; 集合的容器。Collection&#xff08;集合…

25.labview数据采集中的读取和写入文本文件和Excel表格文件

①本文将会讲解labview读取和写入文本文件和Excel文件的几种不同方式&#xff0c;讲解程序的基本原理&#xff0c;并提出具体的实施方案&#xff0c;本文内容如下所示。 ②本文文章结束会提供大家 文本和表格读取写入的源程序 &#xff0c;以便于大家学习和使用。 本文中可能用…

Linux Rsyslog+LogAnalyzer+MariaDB部署日志服务器

文章目录 Linux RsyslogLogAnalyzerMariaDB部署日志服务器1 环境准备1.1 服务器端安装LAMP环境1.2 服务启动并加入开机启动1.2.1 Apache1.2.2 MariaDB1.2.3 Php 2 Rsyslog服务端安装及配置2.1 安装Rsyslog及Rsyslog连接MySQL的模块2.2 导入rsyslog-mysql数据库文件2.3 查看刚导…

艾体宝干货 | IOTA流量分析秘籍第二招:IDS或终端保护系统分析

终端保护解决方案或入侵检测系统&#xff08;IDS&#xff09;可以基于启发式方法、特征码以及新解决方案中的人工智能来检测恶意事件。它们通过电子邮件、Syslog、Webhooks或其他方式生成警报。然而&#xff0c;有效地分析这些警报消息的根本原因&#xff0c;以识别和响应潜在威…

数学建模(1):期末大乱炖

1 概述&#xff01;&#xff01; 1.1 原型和模型 原型&#xff1a;客观存在的研究对象称为原型&#xff0c;也称为“系统”、“过程”。 机械系统、电力系统、化学反应过程、生产销售过程等都是原型&#xff1b; 研究原型的结构和原理&#xff0c; 从而进行优化、预测、评价…

【Android源码】Gerrit安装

前言 如果你打开 https://android.googlesource.com/platform/manifest&#xff0c;就会发现&#xff0c;google官方管理Android源码&#xff0c;使用的是Gerrit。Android系统源码是非常大的&#xff0c;用Git肯定是不适合。对于大型项目&#xff0c;得用Gerrit&#xff0c;今…

解决微信小程序使用textarea输入框 type=“textarea“ 文本输入限制问题

出现的问题 type"textarea" 这个限制 微信小程序使用textarea , 输入字数大于140 时就输入不进去了 加入这个就解决了 maxlength"-1" <u-inputv-model"queryParams.orderIdTxt"border"true":focus"true":auto-height&q…

c++:动态内存变量

典型的C面向对象编程 元素 (1)头文件hpp中类的定义 (2)源文件cpp中类的实现&#xff08;构造函数、析构函数、方法&#xff09; (3)主程序 案例 (1)用C来编程“人一天的生活” (2)“人”的属性&#xff1a;name、age、male (3)“人”的方法&#xff1a;eat、work(coding/shop…

【虚拟机】虚拟机网络无法访问问题【已解决】

【虚拟机】虚拟机无法上网问题【已解决】 问题探究解决方法法1&#xff1a;查看相关“网络服务”是否处于正常启动状态法2&#xff1a;重启网络法3&#xff1a;重新安装VMWare法4&#xff1a;使用NAT模式&#xff0c;每次打开win7都没连上网的解决办法 问题探究 安装了很多个虚…

香橙派 AIpro 根据心情生成专属音乐

香橙派 AIpro 根据心情生成专属音乐 一、OrangePi AI pro 开发版参数介绍1.1 接口简介1.2 OrangePi AI pro 的Linux系统功能适配情况1.3 开发板开机1.4 远程连接到 OrangePi AIpro 二、开发环境搭建2.1 创建环境、代码部署文件夹2.2 安装 miniconda2.3 为 miniconda 更新国内源…

分子AI预测赛笔记

#AI夏令营 #Datawhale #夏令营 Taks1 跑通baseline 根据task1跑通baseline 注册账号 直接注册或登录百度账号&#xff0c;etc fork 项目 零基础入门 Ai 数据挖掘竞赛-速通 Baseline - 飞桨AI Studio星河社区 启动项目 选择运行环境&#xff0c;并点击确定&#xff0c;没…

Redis的八种数据类型介绍

Redis 是一个高性能的键值存储&#xff0c;它支持多种丰富的数据类型。每种数据类型都有其特定的用途和底层实现。下面我将介绍 Redis 支持的主要数据类型及其背后的数据结构。 本人这里还有几篇详细的Redis用法文章&#xff0c;可以用来进阶康康&#xff01; 1. 字符串 (Stri…