c语言常用小tips

1.gets()函数的替换

1.直接要求输入含有空格的字符串

#include<stdio.h>
#include<string.h>
int main()
{
    char s[1005];
    scanf("%[^\n]",s);
    puts(s);
    return 0;
}

2,输入含有空格的字符串之前有输入

#include<stdio.h>
#include<string.h>
int main()
{
    int n;
    scanf("%d",&n);
    getchar();
    char s[1005];
    scanf("%[^\n]",s);
    puts(s);
    return 0;
}

2.mallo函数
mallo函数返回的实际是一个无类型指针,必须在其前面加上指针类型强制转换才可以使用
指针自身 = (指针类型*)malloc(sizeof(指针类型)*数据数量)
重点:在使用malloc开辟空间时,使用完成一定要释放空间,如果不释放会造内存泄漏。
在使用malloc函数开辟的空间中,不要进行指针的移动,因为一旦移动之后可能出现申请的空间和释放空间大小的不匹配

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int *s1=NULL;
    int i,j;
    for(int i=0;i<numsSize-1;i++)
    {
        for(int j=i+1;j<numsSize;j++)
        {
            if(nums[i]+nums[j]==target)
            {
                *returnSize=2;
                s1=(int*)malloc(sizeof(int)*2);
                s1[0]=i;
                s1[1]=j;
                return s1;
            }
        }
    }
    *returnSize=0;
    return s1;
}

3.转换
sprintf用于连接字符串
方便地连接两个或者多个字符串
1.sscanf()函数
头文件 #include
sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。
1.将字符串化为十进制数

int main()
{
    char a[10] = {"255"};
    int b;
    sscanf(a,"%d",&b);
    printf("%d",b);
    return 0;
}
输出结果为 255int b 就是 255

2.将字符串化为十六进制数

int main()
{
    char a[10] = {"ff"};
    int b;
    sscanf(a,"%x",&b);
    printf("%d",b);
    return 0;
}
输出结果为255 int b用十进制输出

%d                 转化为十进制整数
%i                  转化为十进制,八进制,十六进制整数
%o                  转化为八进制整数
%x                  转化为十六进制整数
%X                 同上
%c                  转化为一个字符
%s                  转化为一个字符串
%f/%lf             转化为一个浮点数

1.sprintf用于格式化字符串
把变量打印到字符串中,从而获得数字的字符形式,这样不需要手工转换。

 char c[100];
 int k=255;
 sprintf(c,"%d",k);
//c包含"255"

2.sprintf用于进制转换
可以方便地得到变量的十六进制和八进制字符序列,再稍加处理即可得到每一位的值。

 char c[100];
 int k=255;
 sprintf(c,"%x",k);
//c包含"ff" c[0]='f' c[1]='f'

3.sprintf用于连接字符串
方便地连接两个或者多个字符串

 char buf[1024]; char a[100];char b[100];char c[100];
 sprintf(buf,"%s%s%s",a,b,c);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值