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;
}
输出结果为 255,int 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);