Introduction
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、网页空间、营销软件、网站建设、济水街道网站维护、网站推广。
Linux is an open-source operating system that is widely used in server environments and for scientific computing. The command-line interface and the utilities provided with Linux make it a powerful tool for developers and researchers. C is a popular programming language that is efficient and usually used to write system-level software. In this tutorial, we will explore how to write a file in C language using the Linux environment.
Creating and Opening a File
The first step for writing a file in C on Linux is to create and open the file. We can define a file variable using the data type “FILE” and a pointer variable using the data type “FILE *”. Next, we need to use the “fopen()” function to open the file with a specific mode. The modes are used to define the access and operation that we can perform on the file. The most commonly used modes are “r”, “w”, “a”, and “r+”. The “r” mode is used for reading the file, “w” mode is for opening the file for writing and deleting previous file contents, “a” mode is for opening the file for writing and appending the new data to the end of the file, and “r+” mode is for opening the file for both reading and writing.
Here is the code snippet to create and open the file in write mode:
“`
#include
#include
int mn() {
FILE *fp;
fp = fopen (“file.txt”, “w”);
if (fp == NULL) {
printf(“Error opening file!\n”);
exit(1);
}
fprintf(fp, “Hello World!\n”);
fclose(fp);
return 0;
}
“`
In the above code, we have opened the file “file.txt” in write mode and added a string “Hello World!” to the file. Further, we have used the “fclose()” function to close the file.
Writing to a File
After opening the file, we can use various functions to write data to the file. We can use the “fprintf()” function to print data to the file. The syntax of the function is similar to the “printf()” function. We can specify the stream to which we want to write the data, the format specifier, and the values that we want to print.
Here is the code example to write integer values to a file using fprintf():
“`
#include
#include
int mn() {
FILE *fp;
int i, n = 10;
fp = fopen (“numbers.txt”, “w”);
if (fp == NULL) {
printf(“Error opening file!\n”);
exit(1);
}
for (i = 0; i
fprintf(fp, “%d “, i);
fclose(fp);
return 0;
}
“`
In the above code, we have used a for loop to print the numbers from 0 to 9 to the file “numbers.txt”. We have printed the integers with a space in between using the “%d ” format specifier.
Reading from a File
Reading data from a file is also a common task in C programming. We can use the “fscanf()” function to read data from the file. The function works similar to the “scanf()” function used for input from the console. We need to pass the file stream, the format specifier for the data we want to read, and the variables where we want to store the data.
Here is the code example to read integers from a file using fscanf():
“`
#include
#include
int mn() {
FILE *fp;
int i, n = 10, num;
fp = fopen (“numbers.txt”, “r”);
if (fp == NULL) {
printf(“Error opening file!\n”);
exit(1);
}
for (i = 0; i
fscanf(fp, “%d”, &num);
printf(“%d\n”, num);
}
fclose(fp);
return 0;
}
“`
In the above code, we have opened the file “numbers.txt” in read mode and used a for loop to read integers from the file using the “fscanf()” function. We have printed the integers to the console using the “printf()” function.
Conclusion
相关问题拓展阅读:
先说下错误。
读取,文件是用a+方式打开,这读取数据,因为文件指针在最末的关系卜档纳,读取出来的数据是空的,所以n永远为0。
其次,在写数据前,没有fclose文件就再fopen一次,这是正确的文件操作方式?
最后,老实说,看你的代码头很痛,不是说代码很难,而是这个格式实在太难看,很多时候,一看到这种混乱的代码,直接看都不看就关掉的。在诸多IDE的今天,写一段格式整齐的代码很难么,不要跟我说你是用windows记事本写代码的。
最最后,下面是整理并修改正确的代码:
#include
#include
#include
#ifndef MAX_NUM
#define MAX_NUM 100
#endif
typedef struct student
{
char num;
int math;
int eng;
int chin;
int ave;
int totle;
}stu;
void main()
{
stu a;
int i = 0, n = 0, k = 0;
FILE *fp = fopen(“e:\\student.txt”,”rb+”);
for(n = 0; fp && fread(&a, 1, sizeof(stu), fp) != 0; ++n) ;
printf(“请输入要添加的信息”);
printf(“\n请输入第%d个学生信息:\n”,n + 1);
printf(“学号:\n”);
scanf(“%s”,a.num);
printf(“math成绩:\n”);
scanf(“%d”,&a.math);
printf(“english成绩:\n”);
scanf(“%d”,&a.eng);
printf(“chin成绩:\n”型没);
scanf(“%d”,&a.chin);
a.totle=a.math+a.eng+a.chin;
a.ave=a.totle/3;
for(k = n-1; k >= 0; k–)
{
if(strcmp(a.num,a.num) == 0)
{
printf(“该学生已经存在蠢答,请重新输入”);
break;
}
}
if(fp == NULL && (fp = fopen(“e:\\student.txt”,”wb”)) == NULL)
{
printf(“open file error!\n”);
exit(0);
}
fseek(fp, 0, SEEK_SET);
for(i = 0; i
fwrite(&a, 1, sizeof(a), fp);
fclose(fp);
}
从代码看,在Windows平台是有大概率会乱码,假如你的商品信息数组里存放了换行就一定会乱码。
主要问题在文件的打开方式不对,fread, fwrite函数更好以二进制模式打开文棚衫件,即打开方式加上b,即(rb, wb)。在unix/Linux系统应该没问题。以下是问题解释:
二进制和文本模式的区别
1.在windows系统中,文本模式下,文件以””代表换行。若以文本链如腔模式打开文件,并用fputs等函数写入换行符”橡答\n”时,函数会自动在”\n”前面加上”\r”。即实际写入文件的是”” 。
2.在类Unix/Linux系统中文本模式下,文件以”\n”代表换行。所以Linux系统中在文本模式和二进制模式下并无区别。
扩展资料
:
ffopen为C语言编程中所需的一个常用语言,多数用来打开文件。其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);其中,‘’文件指针名”必须是被说明为FILE 类型的指针变量,文件名”是被打开文件的文件名;“使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。
基本介绍函数功能:打开一个文件函数原型:FILE * fopen(const char * path,const char * mode);相关函数:open,fclose,fopen_s,_wfopenfopen所需库:返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。一般而言,打开文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
参数说明:参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读写数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
linux c write file的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux c write file,Linux下使用C语言写文件,C语言中指针读写文件,问什么记事本都是乱码,怎么改呢?的信息别忘了在本站进行查找喔。
成都服务器租用选创新互联,先试用再开通。
创新互联(www.cdcxhl.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。物理服务器托管租用:四川成都、绵阳、重庆、贵阳机房服务器托管租用。
文章标题:Linux下使用C语言写文件 (linux c write file)
文章网址:http://www.shufengxianlan.com/qtweb/news29/487829.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联