一,snprintf拼接字符串
1,原来字符串有值,后面拼接一个字符串
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ori[100] = "I love ";
char *afterStr = "you";
snprintf(ori+strlen(ori),strlen(afterStr)+1,"%s",afterStr);
printf("%s\n",ori);
return 0;
}
2,直接拼接两个字符串到一个变量
#include <stdio.h>
#include <stdlib.h>
#define Length(str) sizeof(str)/sizeof(str[0])
int main()
{
char ori[100] = {0};
snprintf(ori,sizeof(ori)-1,"%s%s","I love ","you");
printf("%s\n",ori);
return 0;
}
上述运行结果:
I love you
二,文件拷贝fopen,fclose,fgetc,fputc,ferror
文件操作涉及到文件打开,关闭,读文件字符,写文件,以及异常处理
以下代码实现的功能是将oriDoc.txt文件里的内容拷贝到另外一个文件里
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *freadOri = NULL;
FILE *fwriteAfter = NULL;
char ch = 0;
freadOri = fopen("./oriDoc.txt","r");
if(freadOri == NULL)
{
printf("open file fail"); //异常处理:打开文件出错
return 0;
}
fwriteAfter = fopen("./afterDoc.txt","w");
if(fwriteAfter == NULL)
{
printf("open file fail");
if(fclose(freadOri) == NULL) //异常处理:关闭文件出错
return 0;
return 0;
}
ch = fgetc(freadOri);
while( ch != EOF && ferror(freadOri) == 0)
{
fputc(ch,fwriteAfter);
if(ferror(fwriteAfter))//异常处理:文件操作出错,出错时返回非零值,否则返回零值
return 0;
ch = fgetc(freadOri);
}
fclose(freadOri);
fclose(fwriteAfter);
return 0;
}
三,C语言中各类型变量所占字节数
首先来看字符类型,这里单指char , char变量在内存中存储的是字符对应的ASCII码值。所以长度也是固定的,不管在哪种编译器下,均为1个字节。
再来看 浮点类型,C中的浮点类型有俩种,float和double,与整数不同的是,浮点数的长度适中的固定的,float占用4个字节,double占用8个字节。
最后来看 整型类型,查阅资料后发现虽然16位、32位或者64位的机子各种类型并不一样,但有几条规则(ANSI/ ISO制定):
- short 至少占用2个字节
- int 建议为一个机器字长,32位环境下为4字节,64位环境下为8字节
- short 的长度不能大于int, long 的长度不能小于int