#include#include void init(char*a,char *b,char *c) { gets_s(a,20); gets_s(b,20); gets_s(c,20); } void swap(char* a, char* b) { char tmp[20] = {0}; strcpy_s(tmp,20,a); strcpy_s(a,20,b); strcpy_s(b,20,tmp); } void sort(char *a,char *b,char *c) { if (strcmp(a, b) > 0) { swap(a, b); } if (strcmp(a, c) > 0) { swap(a, c); } if (strcmp(b, c) > 0) { swap(b, c); } } void show(char *a,char *b,char *c) { printf("%s", a); printf("%s", b); printf("%s", c); } int main() { char a[20] = {0}; char b[20] = {0}; char c[20] = {0}; init(a,b,c); sort(a, b, c); show(a, b, c); }
我遇到的问题:
1.指针初始化
我们要尽量避免野指针的出现,注意要初始化指针。
2.swap函数的使用
当我们需要交换两个字符串时,要把一个字符串里的字母完全复制到另一个字符串。
我们的形参是两个char类型的指针,我们要做的就是将这两个字符串进行交换。
我之前写的是
#includevoid Swap(char* a, char *b) { char tmp[] ="0"; *tmp = *a; *a = *b; *b = *tmp; } int main() { char a[] = "ab"; char b[] = "ba"; printf("%s %sn", a, b); Swap(a, b); printf("%s %sn", a, b); }
但是这样只能改变首地址的值 ,我们需要用strcpy函数进行转移值。
3.#include
①strcpy_s
这个函数的作用是将一个字符串复制到另一个字符串
strcpy_s(dst, sizeof(dst)/sizeof(dst[0]), src);
将src里的字符串复制到dst里,中间这个数据的大小就是目标地址的大小,这个参数的作用是保证足够大的缓冲区尺寸。函数拷贝以‘’结尾。
②strcmp
int strcmp(const char *str1, const char *str2)
输入的参数必须是字符串。
- 如果返回值小于 0,则表示 str1 小于 str2。
- 如果返回值大于 0,则表示 str1 大于 str2。
- 如果返回值等于 0,则表示 str1 等于 str2。
4.gets_s的使用
是gets的安全版本,为了避免缓冲区溢出,在gets_s中在定义一个参数。
gets_s(char *p,int n);
//n表示其最多读取的数量,一般为数组大小,即从键盘读入大小为n的一个字符串,它在输入的是时候,不以空格为结束标志,而以回车符为结束标志。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)