入门-C编程基础部分:2、第一个程序
飞书文档https://x509p6c8to.feishu.cn/wiki/DlTywzZTiiHiL0kQpcKcNMu8nle
一、C Hello World 实例
让我们看一段简单的代码,可以输出单词 "Hello World":
#include <stdio.h>
int main()
{
/* 我的第一个 C 程序 */
printf("Hello, World! \n");
return 0;
}
接下来我们讲解一下上面这段程序:
- 程序的第一行 #include <stdio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。
- 下一行 int main() 是主函数,程序从这里开始执行。
- 下一行 /*...*/ 将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。
- 下一行 printf(...) 是 C 中另一个可用的函数,会在屏幕上显示消息 "Hello, World!"。
- 下一行 return 0; 终止 main() 函数,并返回值 0。
二、编译 & 执行 C 程序
下来让我们看看如何把源代码保存在一个文件中,以及如何编译并运行它。下面是简单的步骤:
- 打开VSCode
- File(文件)->Open Folder(打开文件夹)
在弹出的窗口,选择一个电脑路径(不要带中文字符),新建一个文件夹,然后选择该文件夹
如果弹出此窗口,选择“是,我信任此作者”即可
然后点击File(文件)->new File (新建文件)
弹出的窗口中,输入hello.c文件名,这个文件名不要有空格,不要有中文字符
然后在弹出的窗口中,选择我们刚刚创建的路径
复制下方代码,粘贴到hell.c文件中
Plain Text
#include <stdio.h>
int main()
{
/* 我的第一个 C 程序 */
printf("Hello, World! \n");
return 0;
}
添加上述代码后,然后按Ctrl+S保存
然后点击编译,再点击运行
运行后,看到这个就是成功啦
编译方式选择:
使用C/C++ Runner(建议)
如果搭建环境时,安装了该插件,在新建工程后,可以看到菜单栏下方,有这几个按键,我们逐个点击“编译”,“运行”即可,编译完成运行后,可以看到打印了日志。
使用终端命令行(不建议)
打开Vscode菜单栏的Terminal->new Terminal,编译hello.c,生成可执行文件,然后运行,您可以看到屏幕上显示 "Hello World"。
到这里,你已经把第一个应用程序运行起来啦。
更好玩的程序参考
生成文本
#include <stdio.h>
#define FILENAME "./1.txt"
#define WRITEWORDS "These words are written in file.\n这是新加入的文件内容\n"
int main(){
FILE *fd = NULL; //文件描述符
size_t Nmemb = 1; //以单次写入某个长度的方式写入的个数
printf("run start");
fd = fopen(FILENAME, "a"); //打开一个名为FILENAME的文件,如果该文件夹没有则创建,权限为可读可写。
if(NULL == fd){ //判断是否打开成功
perror("open");
return -1;
}
fwrite(WRITEWORDS, sizeof(WRITEWORDS), Nmemb, fd); //往文件写入WRITEWORDS字符串,不覆盖原文内容
fclose(fd); //关闭文件
fd = NULL; //清空指针
printf("run end"); while(1);
}
生成图像
#include <stdio.h>
#include <stdlib.h>
#define w 200
#define h 200
void WriteBMP(char*img,const char* filename)
{
int l=(w*3+3)/4*4;
int bmi[]= {l*h+54,0,54,40,w,h,1|3*8<<16,0,l*h,0,0,100,0};
FILE *fp = fopen(filename,"wb");
fprintf(fp,"BM");
fwrite(&bmi,52,1,fp);
fwrite(img,1,l*h,fp);
fclose(fp);
}
int main()
{
char img[w*h*3];
for(int i=0; i<w*h*3; i++)img[i]=rand()%256;
WriteBMP(img,"test.bmp");
system("test.bmp");
return 0;
}
批量生成文本
#include <stdio.h>
#include <stdlib.h>
#define FILENAME_FORMAT "./file%d.txt"
#define WRITEWORDS "These words are written in file.\n这是新加入的文件内容\n"
int main(){
FILE *fd = NULL;
size_t Nmemb = 1;
for (int i = 1; i <= 100; i++) {
char filename[50];
sprintf(filename, FILENAME_FORMAT, i);
fd = fopen(filename, "a");
if (NULL == fd){
perror("open");
return -1;
}
fwrite(WRITEWORDS, sizeof(char), sizeof(WRITEWORDS) - 1, fd);
fclose(fd);
fd = NULL;
}
return 0;
}