写好的程序怎么编译? 01 Linux 终端 02 VS (VS2017会对scanf报错,作为一个最经常用到的函数之一。报错让人蛋疼..............) 为什么没用VC8.0或者 Turbo C。。。可能是这两个工具似乎太落后了,毕竟C语言标准年年更新然而这两个工具好像很久没动了。。今天刚学完结构体,某师,回去用结构体给我做一个简单的通讯录,,,,好吧,第二天自习的时候做了很久,最后灵光一闪参考(chaoxi)了CSDN的大神博客 .......
下面是第六天学习记录下的代码,部分为编译,可能会报错 。
// 指针练习
01 定义各种变量的练习
02 //段错误
▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅
▉
二阶指针常用的地方
1、函数传参
2、命令行参数
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
printf("%d\n",argc);
for (i = 0; i < argc - 1; i++) //打印命令行参数 /a.out hello word
{ //打印出来是 argc argv[1]==hello argv[2] == world
printf("%s\n", argv[i + 1]);
}
return 0;
}
▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅
▉
3、使用命令行参数完成冒泡排序
#include <stdio.h>
#include <stdlib.h>
void sort(char *a[], int length)
{
int i, j;
char *tmp;
for (i = 0; i < length - 1; i++)
{
for (j = 0; j < length - i - 1; j++)
{
if (strcmp(a[j + 1], a[j + 2]) > 0)
{
tmp = a[j + 1];
a[j + 1] = a[j + 2];
a[j + 2] = tmp;
}
}
}
}
int main(int argc, char *argv[])
{
int i;
sort(argv, argc - 1);
for (i = 0; i < argc - 1; i++)
{
printf("%s ", argv[i + 1]);
}
printf("\n");
return 0;
}
▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅
▉
结构体 (数组缺点,只能保存相同类型的元素)
// 1、结构体的占用字节一定是最长成员的字节数整数倍
// 2、每个成员的偏移量一定是该成员长度的整数倍
struct StructName
{
成员列表列;
};
struct StructName
{
成员列表列;
}变量名表列;
▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅
▉
练习1 尝试定义并输出一个结构体
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct student
{
char name[20]; //4
int age; //4
char sex; //1
};
typedef struct student Stu; //将结构体变量名
int main()
{
Stu S1 = { "PENG",20,'m' };
Stu S2;
strcpy(S2.name, "GRUE");
S2.age = 19;
S2.sex = 'm';
printf("name %s, age %d, sex %c\n", S1.name, S1.age, S1.sex);
printf("name %s, age %d, sex %c\n", S2.name, S2.age, S2.sex);
Stu *S3 = (Stu *)malloc(sizeof(Stu) * 1);
if (NULL == S3)
{
printf("Malloc failure!\n");
}
scanf("%s %d %c", S3->name,&S3->age, &S3->sex);
printf("name %s, age %d, sex %c\n", S3->name, S3->age, S3->sex);
free(S3); //释放堆
return 0;
}
▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅
// 结构体中使用指针,需再次给指针分配内存空间 malloc两次,free两次
// free
▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅
▉
//结构体数组
#include <stdio.h>
struct student
{
char name[20]; //20
int age; //4
char sex; //1 定义一个结构体
};
typedef struct student stu; //将结构体变量名
int main()
{
int i;
stu s[5]; //定义一个结构体数组,用循环将其赋值
for(i =0; i < sizeof(s)/sizeof(s[0]); i++) //输入五组.0
{
scanf("%s %d %c",s[i].name,&s[i].age,&s[i].sex);
}
for(i =0; i < sizeof(s)/sizeof(s[0]); i++)
{
printf("%s %d %c\n",s[i].name,s[i].age,s[i].sex);
}
return 0;
}
▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅
▉
//通讯录 增(人的信息) 改(修改信息) 查(根据姓名查看其他信息) 删
//使用结构体数组来写
// 思考 通讯录个人信息应用结构体存储 应包含 姓名 (字符串) 电话号码(字符串) 住址(字符串)