精华内容
下载资源
问答
  • 百度答客1: ...后缀名.o 就是object, 也就相当于windows下编译obj文件, 俗称目标文件,该文件指源代码经过编译程序产生且能被cpu直接识别二进制代码。由编译器生成,具体生成方法在不同开发

    ubuntu16.04实现

    百度答客1:

    是编译成功后的文件,以hello.c为例:
    先将源文件编译成目标zhi文件:

    gcc - c hello.c
    

    这样就生成hello.o文件,再将目标文件编译成可执行文件:

    gcc -o hello hello.o
    

    这样就生成了可执行文件,在./hello就可以运行hello了。

    百度答客2:

    后缀名.o 就是object, 也就相当于windows下编译的obj文件, 俗称目标文件,该文件是指源代码经过编译程序产生的且能被cpu直接识别二进制代码。由编译器生成,具体的生成方法在不同的开发环境上是不同的.

    百度百科说:后缀名.o文件是对象文件里面包含的内容就是0,1这样的机器可执行的执令,当你程序要执行时还需要进行链接(link).
    连接程序之后再将这个文件与系统库文件连接就生成可执行文件,也就是把多个.o文件连接成一个可执行文件了。

    展开全文
  • C语言什么是头文件

    2021-03-30 17:38:52
    之前我们经常可以看到一个程序的开头有 #include也就是stdio.h这文件,这一个名字叫stdio,后缀为.h文件,其实和我们在日常用txt文本文件并无两样,都我们能看懂字符,只不过英文而已,不信可以找到它看...

    头文件
    之前我们经常可以看到一个程序的开头有 #include也就是stdio.h这文件,这是一个名字叫stdio,后缀为.h的文件,其实和我们在日常用的txt文本文件并无两样,都是我们能看懂的字符,只不过是英文而已,不信可以找到它看看,以VC6为例,可以找到VC6编译器下VC6.0 完整绿色版\VC98\Include\目录,即可看到stdio.h文件。
    printf并不属于C语言本身,加上#include<stdio.h>就算定义了。因为在stdio.h这个头文件中有关于printf的定义,大家可以在打开stdio.h后搜索printf。
    在看一个C语言是如何”包含”这些头文件的,答案就是#include这个预处理命令!所谓预处理,即可以在编译器编译之前,做一些预先要做的准备工作,比如宏替换、展开等等,而包含头文件其实也就是把头文件里的内容原封不动的放到程序的最前面。
    而我们最常见的<stdio.h>就是输入输出函数,因为大部分程序因为要有输出才能叫做程序,所以就经常能看见它,它里面就包含了printf和scanf。

    展开全文
  • 8.1.1 什么是面向对象的程序设计 8.1.2 面向对象程序设计特点 8.1.3 类和对象作用 8.1.4 面向对象软件开发 8.2 类声明和对象定义 8.2.1 类和对象关系 8.2.2 声明类类型 8.2.3 定义对象方法 8.2.4 类和...
  • 8.1.1 什么是面向对象的程序设计 8.1.2 面向对象程序设计特点 8.1.3 类和对象作用 8.1.4 面向对象软件开发 8.2 类声明和对象定义 8.2.1 类和对象关系 8.2.2 声明类类型 8.2.3 定义对象方法 8.2.4 类和...
  • C语言的文件操作

    2019-06-21 21:14:16
    什么是文件 简单地说,磁盘上文件就是文件。文件由两部分构成:文件内容+文件属性。 在程序设计中我们一般谈文件有两种:程序文件和数据文件。 程序文件 包括如下三类: 源程序文件(后缀为.c) 目标文件...

    什么是文件

    简单地说,磁盘上的文件就是文件。文件由两部分构成:文件内容+文件属性。
    在程序设计中我们一般谈的文件有两种:程序文件和数据文件。
    程序文件
    包括如下三类:
    源程序文件(后缀为.c)
    目标文件(windows环境后缀为.obj)如:Debug里面存在的临时文件。
    可执行程序(windows环境后缀为.exe)。存放于硬盘上,是给编译器看的,所以打开会是一些乱码。
    数据文件
    数据文件顾名思义肯定是存放数据的文件,存放的是程序运行时读写的数据。
    本博客剖析的是数据文件。

    文件名

    文件标识常被称为文件名。
    一个文件要有一个唯一的文件标识,便于用户识别和引用,且同一目录下不可能有两个相同的文件名。
    文件名由三部分组成:文件路径+文件名主干+文件后缀。
    例如:c:\code\test.txt
    windows中,“\”是目录分隔符,“:”是盘符。

    文件类型

    根据数据的组织形式,数据文件有两种类型:二进制文件文本文件
    (excel和word存储的都为二进制)
    数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件
    如果要求在外存上以ASCII码的形式存储,则需要在存储前转换,以ASCII码字符形式存储的文件就是文本文件

    那么,一个数据在内存中到底是怎么存储的?
    字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储。
    例如有一个整数10000,如果以ASCII码的形式输出到磁盘,则磁盘中会占用5个字节(每个字符占一个字节)。如果以二进制的形式输出,则在磁盘上只占4个字节。
    我们可以通过代码来测试一下:

    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
    	int a = 10000;
    	FILE* pf = fopen("test.txt", "wb");//打开一个文件
    	fwrite(&a, sizeof(int), 1, pf);//往文件里写入
    	fclose(pf);//关闭文件
    	//pf = NULL;
    	system("pause");
    	return 0;
    }
    

    运行完毕后,是否真的生成了这个test.txt文件呢?我们来验证一下。
    我们找到解决方案资源管理器,右击刚刚建立的这个项目,点击在文件资源管理器中打开文件夹。
    在这里插入图片描述
    然后我们可以很清楚的看到,在这个项目路径下面生成了一个test文件。
    在这里插入图片描述
    然后我们需要查看里面的内容,还是找到解决方案资源管理器,右击源文件,添加现有项,把刚刚生成的test文件添加进来。
    在这里插入图片描述
    这个时候如果直接双击test文件打开,那么我们一定会看到一堆乱码。右击test文件,选择打开方式,选择二进制编辑器。
    在这里插入图片描述
    然后我们就可以清楚地看到在test文件里10000是以二进制显示的。
    在这里插入图片描述

    文件缓冲区

    ANSIC标准采用“缓冲文件系统”处理数据文件,所谓缓冲文件系统是指系统自动地在内存中为程序每一个正在使用的文件开辟一块“文件缓冲区”。
    从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后再一起送到磁盘上。如果磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区)然后再从缓冲区逐个将数据送到程序数据区。
    在这里插入图片描述
    缓冲的三种方式:

    • 无缓冲:数据直接到目标区域 Write through(写透)可解决CPU与内部速度不匹配,提高应用程序效率。
    • 行缓冲:显示器,碰到\n将之前的数据输出
    • 全缓冲

    文件指针

    强调一下,文件指针是缓冲文件系统中较为关键的概念,全称叫文件类型指针
    当每个被使用的文件都在内存中开辟了一个文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些变量保存在一个结构体变量中的。这个结构体类型取名叫FILE
    不同的C编译器的FILE类型包含的内容不完全相同,但是大同小异。每打开一个文件的时候,系统就会根据文件的情况 自动创建一个FILE结构的变量,并填充其中的信息。

    所以这个时候就有了FILE的出现。一般都是通过一个FILE的指针来维护这个FILE结构的变量。

    创建一个FILE*的指针变量:

    FILE* PF;
    

    定义pf是一个指向FILE类型数据的的指针变量。它可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能访问该文件。这个意思就是:能够通过文件指针变量找到与它关联的文件

    文件的打开和关闭

    我们要明白,文件在读写之前应该先打开文件,在使用结束后关闭文件
    在编写一个程序时,每打开一个文件,都会返回一个 FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。ANSIC规定,使用fopen函数来打开文件,fclose来关闭文件。

    FILE * fopen(const char * filename, const char * mode);
    int fclose (FILE * steam);
    

    打开一个文件实例代码:

    #include<stdio.h>
    int main()
    {
    	FILE *pFile;
    	pFile = fopen("test.txt", "w");
    	if (pFile != NULL)
    	{
    		fputs("fopen example", pFile);
    		fclose(pFile);
    	}
    	return 0;
    }
    

    文件的顺序读写

    功能 函数名
    字符输入函数 fgetc
    字符输出函数 fputc
    文本行输入函数 fgets
    文本行输出函数 fputs
    格式化输入函数 fscanf
    格式化输出函数 fprintf
    二进制输入 fread
    二进制输出 fwrite

    文件的随机读写

    fseek:根据文件指针的位置和偏移量来定位文件指针。

    int fseek(FILE * stream, long int offset, int origin);
    

    FILE * stream:想改的文件。
    long int offset:偏移量,往前为+,往后为-。
    int origin:标志起始位置。一般有SEEK_SET(起始位置)、SEEK_CUR(当前位置)、SEEK_END(最后的位置,这种情况下偏移量为负数)。

    我们来看一段代码:

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    	FILE*pfile;
    	pfile = fopen("test.txt","wb");
    	fputs("This is an apple.", pfile);//pfile可直接写成stdout,写到显示器输出。
    	fseek(pfile, 9, SEEK_SET);
    	fputs("sam", pfile);
    	fclose(pfile);
    	system("pause");
    	return 0;
    }
    

    这段代码的核心功能就是利了fseek函数找到文件写入的字符串中相对于起始位置的偏移量为9的位置。然后用fputs函数把这个位置之后的三个字符替换成了sam。我们可以打开这个文件来查看一下:
    在这里插入图片描述
    ftell:返回文件指针相对于起始位置的偏移量.

    long int ftell(FILE * stream);
    

    实例代码:

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    	FILE*pfile;
    	long size;
    	pfile = fopen("test.txt", "rb");
    	if (pfile == NULL)perror("Error opening file");
    	else
    	{
    		fseek(pfile, 0, SEEK_END);
    		size = ftell(pfile);
    		fclose(pfile);
    		printf("Size of test.txt:%ld bytes.\n", size);
    	}
    	system("pause");
    	return 0;
    }
    

    这段代码的核心功能是先通过fseek找到相对于字符串结束位置偏移量为0的位置,然后用ftell得到这个数字。
    运行结果如下:
    在这里插入图片描述
    rewind:让文件指针的位置回到文件的起始位置。

    void rewind(FILE * steam);
    

    文件结束判定

    牢记:在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。而是应用于当文件结束时,判断是读取失败还是遇到文件尾结束
    1.文本文件读取是否结束,判断返回值是否为EOF(fgetc),或者NULL(fgets)
    2.二进制文件的读取结束判断,判断返回值是否小于实际要读的个数(fread)。

    展开全文
  •  第一点:当要求输入的数据内容从某个文件中读取的时候,往往这个文件需要自己首先建立,但是又不是标准的记事本文件什么的,往往写特别的后缀名,比如A.in,A.out什么的,所以这个也算作第一
    说到C语言,自己虽然经常用,但是由于专业的问题,我写的C语言一般都是写嵌入式的C语言,所以很少会涉及到文件操作之类的问题,这一块也是很不熟悉的,所以把上次的题目拿下来继续学习学习,总结一下文件操作的问题。
    

      第一点:当要求输入的数据内容从某个文件中读取的时候,往往这个文件需要自己首先建立,但是又不是标准的记事本文件什么的,往往是写特别的后缀名,比如A.in,A.out什么的,所以这个也算作第一个问题吧,这个时候建立文件的方法,可以用

      fp=fopen("A.in","wr");

      这样,如果文件存在则会打开,如果不存在,则会建立一个名为A.in 的文件。这样第一步算是完成了吧。

         第二步:写入文件内容。但是在此之前,需要文件中有内容,有两种方法,其一是用fwrite函数写,比如fwrite("1 2 3 4 ",1,8,fp);其二就是用写字板直接打开文件,然后写入内容就可以了,我觉得还是第二种方法好。呵了个呵呵的。可以在VC的环境下发现,每次调用  

       fp=fopen("A.in","wr");

    的时候,A.in 文件中的内容就都没了。后来查了下原因,是因为fopen中根本就没有这个wr这种方式,正确的应该的话rw+,我晕。。我被欺骗了这么多年。深感自己学习C 语言的无知啊。好吧,这个文件算是解决了吧。

         第三步:读取文件内容。需要知道简单的东西,LF换行吧,值为10,空格的值为32。其他就不多说了。直接贴图贴程序了,mark一下。

    -----------------------------------------------------------------------------------------------------------------------------

                                                                                   A题

    问题描述:

         Tobia这几天玩扑克时对数字的排列产生了兴趣:如果将扑克牌转化为给定的四张数字卡片,用这四张卡片能排列出很多不同的4位数,要求是按从小到大的顺序输出这些四位数。

    输入数据:

      输入数据从文件"A.in“中读取,输入数据有很多组,每组数据占一行,代表四张卡片上的数字(0《=数字《=9),如果四张卡片都是0,则输入结束。

    输出:

      对每组卡片按从小到大的顺序输出所有能由着四张卡片组成的4位数,千位数想通的在同一行,同一行中的每个四位数见用空格分隔。每组输出数据间空一行,最后一株数据后面没有空行。

    备注:输出数据采用标准输出。

    输入样例:

    1 2 3 4

    1 1 2 3

    0 1 2 3

    0 0 0 0

    输出样例:

    #include <stdio.h>
    int main(int arg,char *argv[])
    {
        FILE *fp;
        unsigned char buffer[100]={'\0'};
        unsigned char data[4];
        unsigned char temp;
        int i=0,j=0,k=0,p=0,q=0,m=0,last_q=0;
        int n1,n2,n3,n4;
        unsigned value[24],value_temp=0;
        fp=fopen("A.in","r");
        if(fp==NULL)
        {
            printf("fp is NULL\n");
        }
        fread(buffer,1,8,fp);
        for(i=0;i<4;i++)
            data[i]=buffer[i*2];

        while(1)
        {
            if((data[0]=='0')&&(data[1]=='0')&&(data[2]=='0')&&(data[3]=='0'))
            {
                break;
            }else
            {
            //pai xu
            for(i=0;i<4;i++)
                for(j=i;j<4;j++)
                    if(data[i]>data[j])
                    {

                        temp=data[i];
                        data[i]=data[j];
                        data[j]=temp;
                    }
    //-----------processing---------
           
            for(i=0;i<4;i++)
            {
                if(data[i]!='0')
                {
                n1=data[i];
                data[i]='a';
                for(j=0;j<4;j++)
                {
                    if(data[j]!='a')
                    {
                        n2=data[j];
                        data[j]='a';
                    }else
                    {
                        continue;
                    }
                    for(k=0;k<4;k++)
                    {
                        if(data[k]!='a')
                        {
                            n3=data[k];
                            data[k]='a';
                        }else
                        {
                            continue;
                        }
                        for(p=0;p<4;p++)
                        {
                            if(data[p]!='a')
                            {
                               
                                n4=data[p];
                                value_temp=(n1-'0')*1000+(n2-'0')*100+(n3-'0')*10+(n4-'0');
                                for(m=0;m<q;m++)
                                {
                                    if(value_temp==value[m])
                                        break;
                                }
                                if(m==q)
                                {
                                    printf("%d ",value_temp);
                                    value[q++]=value_temp;
                                }

                            }
                        }
                        data[k]=n3;
                    }
                    data[j]=n2;
                }
                data[i]=n1;
                if(q!=last_q)
                {
                    printf("\n");
                    last_q=q;
                }
                }
            }
            q=0;
               
           
            fread(buffer,1,8,fp);
            for(i=0;i<4;i++)
                data[i]=buffer[i*2];
            }
            if(!((data[0]=='0')&&(data[1]=='0')&&(data[2]=='0')&&(data[3]=='0')))
            {
                printf("\n");
            }
        }
        return 0;
    }

    展开全文
  • 了解C语言原理: 1、就编程而言,可移植性表示什么? 自我理解:可移植性,指它源代码文件在不经过修改...目标代码文件即源代码文件经过编译器编译以后产生中间文件,后缀名以.obj表示。可执行文件就是...
  • 首先这都针对由于VS软件设置,一些函数需要在函数后面加”_s“才能使用。(或者最直接方法程序开头加#pragmawarning(disable:4996) 就什么问题都没有了)比如最常见scanf_s,strcmp_s,strcpy_s。这些加...
  • 用汇编语言、高级语言等开发编制出来可以运行文件,在计算机中称可执行文件(后缀名一般为.exe)。如果没有程序,计算机什么也不会做。在本书中我们重点强调机器人程序,实际上,这只是对于用于控制机器人...
  • 首先这都针对由于VS软件设置,一些函数需要在函数后面加”_s“才能使用。 (或者最直接方法程序开头加#pragmawarning(disable:4996) 就什么问题都没有了) 比如最常见scanf_s,strcmp_s,strcpy_s。...
  • 在一开始,C++程序的源文件后缀“.c”和“.h”,这与C语言程序源文件的后缀名完全一样。这就带来了一些问题, 其中一个比较显著的问题就是编译器无法轻松的区分某个源文件里的程序究竟使用C++编写的,还是...
  • 1.什么是库  在windows平台和linux平台下都大量存在着库。  本质上来说库一种可执行代码的二进制形式,可以被操作系统载入内存执行。  由于windows和linux的... 静态库的后缀名为.a文件.当程序与一个静态库
  • 记住:OC程序的后缀名是.m. 为什么要链接?第一个.o的目标文件里面它启动不了.因为它没有启动代码我们要加上启动代码,另外还要链接一些函数进去。 没有定义NSLog,a....
  • 在给本科一二年级的学生教学C语言时,发现有不少同学由于使用计算机少或缺少基本理论的教学,对这程序设计中的很多基本概念并不了解,比如一些基本的文件和后缀名的概念都不清楚,给C语言的实践带来了很多麻烦。...
  • 在新文件夹中touch hello.c建立一个后缀名为.c程序 在hello.c源文件中写第一个C语言的代码 通过cc hello.c命令进行编译,如果源程序没有什么错误,编译过程将顺利进行,并生成一个可执行文件a.out【cc -c ...
  • 更确切的说他是一个驱动程序,根据代码的后缀名来判断调用c编译器还是c++编译器 (g++)。比如你的代码后缀是.c,他会调用c编译器还有linker去链接c的library。如果你的代码后缀是.cpp, 他会调用g++编译器,当然...
  • Java代码运行过程

    2021-04-12 10:17:29
    2、编译:指使用Java编译器对源文件进行错误排查过程,编译后将生成后缀名为.class字节码文件,不像c语言那样生成可执行文件 3、运行:指使用java解释器将文字字节码文件翻译成机器吗执行并显示结果 什么是...
  • OC简介及基本语法(一)

    2020-05-30 22:12:23
    C程序的源文件的后缀名为.c,OC程序的源文件后缀为.m,m就是message的意思。因为OC完全兼容C语言的,所以在.m文件之中可以写任意的C代码。并且OC中main函数仍然OC程序的入口,作用和C语言中的一样的。 ...
  • 通过我们已经学过知识,你可以编写一个最简单的程序输出一个也许是程序世界中最有名词语: echo "Hello World!"; ?> First PHP page // Single line C++ style comment /* printing the message */ ...
  • C++入门

    2021-03-30 20:35:07
    C++标准输入输出函数,与C语言的头文件 stdio.h 有类似作用,可用于程序与外部世界通信 里面包含了C++中一些常用函数,cin,cout等等 (2)iostream 作为头文件没有 .h 后缀的原因 这C++语言约定,...
  • JAVA基础配置JAVA环境

    2016-09-05 20:29:07
    什么要配置JAVA 环境?...编译指使用Java编译器对源文件进行错误排查过程,编译后将生成后缀名为.class字节码文件,这不像C语言那样最终生成可执行文件。 运行指使用Java解释器将字节码文件
  • 1.2 什么是计算机 1.3 计算机组成 1.4 操作系统变革 I.5 个人计算、分布式计算与客户/a匠务器计算 l. 6 机器语言、汇编语言和高级语言 1.7 C语言与C++历史 1.8 C++标准库 1.9 Java、Internet与万维网 ...
  • 1.2 什么是计算机 1.3 计算机组成 1.4 操作系统变革 I.5 个人计算、分布式计算与客户/a匠务器计算 l. 6 机器语言、汇编语言和高级语言 1.7 C语言与C++历史 1.8 C++标准库 1.9 Java、Internet与万维网 ...
  • 由于这次完整编译,不存在什么依赖文件改了不会重编问题。 3-对每个.c文件,会根据依赖规则%.d: %.c,生成其对应.d文件,例如main.c生成main.d文件为: main.o main.d: main.c command.h 第二次make,假定...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    虚拟控制台最有用的是,当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作,关闭这个程序。 shutdown 1.作用 shutdown命令作用关闭计算机,它使用权限超级用户。 2.格式 shutdown [-h][-i...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

c语言程序名的后缀是什么

c语言 订阅