c语言学习总结
1 strcmp函数: strcmp是比较两个字符串的大小,两个字符串相同时返回0,第一个字符串大于第二个字符串时返回一个正值,否则返回负值。
2 针对王桂林c语言学习关于fread/fwrite加密,解密的程序,调试没问题,但跑不出来,原因可能是输入的参数(-c
01png 02png)有问题,待后续解决。
代码:
#include <stdio.h>
#include <string.h>
//文件加密及解密;
//xx.exe -c src dest
//xx.exe -d src dest
//argv[0] arg[1] argv[2] argv[3]
void encode(char *buf,int n)
{
for(int i=0;i<n;i++)
{
buf[i]++;
}
}
void decode(char *buf,int n)
{
for(int i=0;i<n;i++)
{
buf[i]--;
}
}
int main(int argc, char *argv[1])
{
if(argc != 4)
{
printf("use xx.exe -d[-c] src dest\n");
exit(-1);
}
FILE *pfr = fopen(argv[2],"rb+");
if(pfr == NULL)
{
exit(-1);
}
FILE *pfw = fopen(argv[3],"rw+");
if(pfw = NULL)
{
fclose(pfr);
exit(-1);
}
int buf[1024];
int n;
/* strcmp是比较两个字符串的大小,两个字符串相同时返回0,
第一个字符串大于第二个字符串时返回一个正值,否则返回负值. */
if(strcmp(argv[1],"-c")==0)
{
while(n = fread((void*)buf,1,1024,pfr)>0)
{
encode(buf,n);
fwrite((void*)buf,1,n,pfw);
}
}
else if(strcmp(argv[2],"-d")==0)
{
while(n = fread((void*)buf,1,n,pfr)>0)
{
decode(buf,n);
fwrite((void*)buf,1,n,pfw);
}
}
else
{
printf("arg error\n");
}
fclose(pfr);
fclose(pfw);
return 0;
}