C语言 主函数带参数及文件操作

#include<stdio.h>

int main(int argc, char *argv[])
{
    int i;
    printf("Total %d arguments\n", argc);
    for(i=0; i<argc; i++)
    {
        printf("Argument %d = %s\n", i+1, argv[i]);
    }
    
    system("pause");
    return 0;
}

参数说明:

argc: 参数的个数,不给main()函数传递参数时默认值为1,即至少有一个参数为该可执行文件的文件名(含目录)。

argv: 为指针数组,分别指向各个字符串参数的首地址,其中argv[0]存储的是可执行文件的文件名的首地址。

将上述代码保存为main.c并编译,生成可执行文件main.exe(在D盘根目录下),在cmd命令行下执行其结果如下:

D:\>main.exe hello world
Total 3 arguments
Argument 1 = main.exe
Argument 2 = hello
Argument 3 = world
请按任意键继续. . .

提示:在win7环境下点击开始按钮,在搜索框中输入cmd按回车即可打开cmd窗口。在提示符后输入D:可切换到D盘根目录。

文件操作

https://blog.csdn.net/asffghfgfghfg1556/article/details/78820983

文件一般包括三要素:文件路径、文件名、后缀。

由于在 C 语言中 '\' 一般是转义字符的起始标志,故在路径中需要用两个 '\' 表示路径中目录层次的间隔,也可以使用 '/' 作为路径中的分隔符。

例如,"E:\\ch10.doc"或者"E:/ch10.doc",表示文件 ch10.doc 保存在 E 盘根目录下。"f1.txt" 表示当前目录下的文件 f1.txt。

文件路径:可以显式指出其绝对路径,如上面的”E:\\”或者”E:/”等;如果没有显式指出其路径,默认为当前路径。

文档的结尾都有一个隐藏字符”EOF”,当程序读取它的时候,就会知道文件已经到达结尾。通常使用while循环加EOF判断作为读取结束的标志。

feof用于判断文件结尾。头文件<cstdio>。使用方法是feof(fp),fp为指向需要判断的文件的指针。如果不到文件结尾,返回0值;如果是文件结尾,返回非0.

使用feof判断文件结尾一定要非常注意以下一点:

假设文件包含10字节,并且你读取了十字节,调用feof函数,函数返回值均为0,这是因为尽管文件指针这时已经指向文件尾了,但是你没有试图越过文件尾读取数据,只有当你尝试了读取第十一个字节时,调用feof,函数才会返回0.

因此,使用feof常用的逻辑结构是先读在判断,如果先判断在读取,就会发生异常。

 fopen 打开一个文件   FILE * fopen(char *filename, char *mode);

//定义一个名叫fp文件指针
FILE *fp;
//判断按读方式打开一个名叫test的文件是否失败
if((fp=fopen("test","r")) == NULL)//打开操作不成功
{
    printf("The file can not be opened.\n");     
    exit(1);//结束程序的执行
}
FILE *fp = fopen("1.txt","w");
fputc('a',fp);//写字符函数,写成功则返回该字符,否则返回-1
char b[10] = "1111111";
fputs(b,fp);//放置一个字符数组在文件中,其中,这个数组的长度是必须清楚的,因为这在读文件的时候会用到
fprintf(fp,"%d",15);将15输出到文件
FILE *fp = fopen("1.txt","r");
char a[10];
a[0] = getc(fp);//读取一字节数据
printf("%c\n",a[0]);
fgets(a,8,fp);//读取八个字符
puts(a);
int c;
fscanf(fp,"%5d",&c);//读取一个5长度的空间,读取这个空间上的整数
printf("%d\n",c);

 fclose 关闭一个文件    int fclose(FILE *fp);

 参数说明
  fp:一个已打开文件的文件指针。

 返回值
  正常返回:0。
  异常返回:EOF,表示文件在关闭时发生错误。

文件的读写操作

fgetc 从文件中读取一个字符   int fgetc (FILE *fp);

函数功能:从文件指针 fp 所指向的文件中输入一个字符。输入成功,返回该字符;已读取到文件末尾,或遇到其他错误,即输入失败,则返回文本文件结束标志 EOF(EOF 在 stdio.h 中已定义,一般为 -1)。

注意:由于 fgetc 是以 unsigned char 的形式从文件中输入(读取)一个字节,并在该字节前面补充若干 0 字节,使之扩展为该系统中的一个 int 型数并返回,而非直接返回 char 型。当输入失败时返回文本文件结束标志 EOF 即 -1,也是整数。故返回类型应为 int 型,而非 char 型。

fputc  字符输出函数 fputc 的函数原型为:int fputc (int c, FILE *fp);

所在头文件:<stdio.h>

函数功能:向 fp 指针所指向的文件中输出字符 c,输出成功,返回该字符;输出失败,则返回 EOF(-1)。

向标准输出设备屏幕输出字符变量 ch 中保存的字符,不仅可以使用宏 putchar(ch) 实现,也可以使用 fputc (ch,stdout); 实现。其中,stdout 指向标准输出设备—显示器所对应的文件。stdout 也不需要人工调用函数 fopen 打开和 fclose 关闭。

rewind  文件读写位置复位函数 rewind 的函数原型为:void rewind (FILE *fp);

所在头文件:<stdio.h>

函数功能:把 fp 所指向文件中的读写位置重新调整到文件开始处。

fgets  字符串输入函数 fgets 的函数原型为:char * fgets (char *s, int size, FILE * fp);

所在头文件:<stdio.h>

函数功能:从 fp 所指向的文件内,读取若干字符(一行字符串),并在其后自动添加字符串结束标志 '\0' 后,存入 s 所指的缓冲内存空间中(s 可为字符数组名),直到遇到回车换行符或已读取 size-1 个字符或已读到文件结尾为止。该函数读取的字符串最大长度为 size-1。

参数 fp:可以指向磁盘文件或标准输入设备 stdin。

返回值:读取成功,返回缓冲区地址 s;读取失败,返回 NULL。


fputs  字符串输出函数 fputs 的函数原型为:int fputs (const char *str, FILE *fp);

所在头文件:<stdio.h>

函数功能:把 str(str 可为字符数组名)所指向的字符串,输出到 fp 所指的文件中。

返回值:输出成功,返回非负数;输出失败,返回EOF(-1)。


fscanf   文件格式化输入函数 fscanf 的函数原型为:int fscanf (文件指针,格式控制串,输入地址表列);

所在头文件:<stdio.h>

函数功能:从一个文件流中执行格式化输入,当遇到空格或者换行时结束。注意该函数遇到空格时也结束,这是其与 fgets 的区别,fgets 遇到空格不结束。

返回值:返回整型,输入成功时,返回输入的数据个数;输入失败,或已读取到文件结尾处,返回 EOF(-1)。

故一般可根据该函数的返回值是否为 EOF 来判断是否已读到文件结尾处。

fprintf   文件格式化输出函数 fprintf 的函数原型为:int fprintf (文件指针,格式控制串,输出表列);

所在头文件:<stdio.h>

函数功能:把输出表列中的数据按照指定的格式输出到文件中。

返回值:输出成功,返回输出的字符数;输出失败,返回一负数。


              fprintf 往文件中写格式化数据
              fscanf 格式化读取文件中数据
              fread 以二进制形式读取文件中的数据
              fwrite 以二进制形式写数据到文件中去
              getw 以二进制形式读取一个整数
              putw 以二进制形式存贮一个整数

    文件状态检查函数 feof 文件结束
              ferror 文件读/写出错
              clearerr 清除文件错误标志
              ftell 了解文件指针的当前位置

      文件定位函数 rewind 反绕
              fseek 随机定位

猜你喜欢

转载自blog.csdn.net/fzf1996/article/details/90607909