文章防复制功能
本帖最后由 额外减小 于 2023-2-6 15:34 编辑大家好,我今天分享的是"通过在行末添加乱码使得他人无法私自复制转载文章"的程序(自创)(仅在本论坛有效)SXv!sMW*
qD^3:rP;w|
实测:'{td
bR_K!
5vA\cJ~)
fT^
话不多说,直接上代码,注释给你写好了,如有不明白可在评论区交流。 <&`
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <math.h>
#include <time.h>
// 原理:乱码两侧加上...
char * make_str(int random,char * _Dest,int length);//创建乱码字符串
char * add_text(int random,char * _Dest,const char * line_str);//在行末添加乱码字符串
int CopyToClipboard(const char* pszData, const int nDataLen);//将修改后的全文复制到剪贴板
void _clear(char * str,int len);//将数组归零(防止先前的内容影响后面的内容)
char * make_str(int random,char * _Dest,int length)
{
time_t t;
time(&t);
srand(random);
for(int i=0;i<length-1;i++)//在ASCII字符表的可显示字符部分(32~126)寻找组成乱码的字符
{
srand((unsigned)(t+(i+3154)*(i+314)+rand()*(i+2)));//重置种子
_Dest=abs(rand())%95+32;
}
return _Dest;
}
char * add_text(int random,char * _Dest,const char * line_str)
{
time_t t;
srand(random);
int length=abs(rand())%10+5;//乱码长度(5~14字符)
char random_str={'\0'};
strcpy(_Dest,line_str);
strcat(_Dest,"");
strcat(_Dest,make_str(random,random_str,length));
strcat(_Dest,"");
return _Dest;
}
int CopyToClipboard(const char* pszData, const int nDataLen)
{
if(OpenClipboard(NULL))
{
EmptyClipboard();
HGLOBAL clipbuffer;
char *buffer;
clipbuffer = GlobalAlloc(GMEM_DDESHARE, nDataLen+1);
buffer = (char *)GlobalLock(clipbuffer);
strcpy(buffer, pszData);
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT, clipbuffer);
CloseClipboard();
return 0;
}
return 1;
}
void _clear(char * str,int len)
{
for(int i=0;i<len;i++)
{
str='\0';//重新初始化数组
}
}
int main(void)
{
char one_line={'\0'},temp={'\0'},whole_text={'\0'},ch; //数组长度:代表每行长度不超过1000字节,全文长度不超过100000字节
int Lcount=0,Tcount=0,random;
time_t t;
srand((unsigned)time(&t));
random=rand();
while((ch=getchar())!=EOF)//ctrl+Z
{
if(ch=='\n')//将一行的内容加上换行符连接到全文字符串
{
strcat(whole_text,add_text(random,temp,one_line));
strcat(whole_text,"\n");
Lcount=0;
_clear(one_line,1000);
srand(random);
random+=rand();//重置 random 数值
}
else
{
one_line=ch;
Lcount++;
}
Tcount++;//统计全文字符数
}
CopyToClipboard(whole_text,100000);
system("cls");
printf("处理后的内容已经复制到剪贴板!\n\n感谢您的使用,再见!\n");
MessageBoxA(NULL,"处理后的内容已经复制到剪贴板!\n感谢您的使用,再见!","提示",MB_ICONINFORMATION);
return 0;
}&nyrwVId05
]Vkl>O#Bx>kP1
注意事项%0(MBqve0
l;]G]pSb
**** Hidden Message *****B1H&<;7G}y'#B
更新:按小甲鱼老板的要求,我已改好了代码,主要增加了避开【code】标签的功能,从而更加方便。
不过改进后的程序如果接收到的"【code】标签与【/code】标签数目不同,则无法正常地将每一行都填上乱码。
所以奉劝一些不正经的用户好自为之(不是)
话不多说,上代码
对不起:因为代码中涉及到“code”标签的字符串,会被系统识别成代码段,所以我只好发文件模式了
刚好150行,挺整的。
删去了一些不重要的代码。
Linux,Mac用户只需要把代码中的"CopyToClipboard"函数改为stdout或输出到文件即可正常编译运行。(不知道system函数要不要改,你看着办吧) @hveagle @Mike_python小 @sfqxx @liuhongrun2022 @高山
求支持哈{:10_254:} {:7_146:} isdkz 发表于 2023-2-4 00:37
谢谢支持!{:10_288:} {:10_335:} 可以丫! 代码段是使用 code 标签包裹,可以添加代码让其避开 code 即可。 {:10_256:}牛 本帖最后由 liuhongrun2022 于 2023-2-4 08:36 编辑
{:5_106:}
但是就不能用背景了 牛逼 {:10_256:} 我试试
评分KA3
a@c!+N!!;H
测试#include <stdio.h>
int main()
{
printf("hello?");
return 0;
} 学习,学习。 注意事项第3、4条可修改的参数能注释一下吗?{:10_281:} 嘉岳呀 发表于 2023-2-5 14:45
注意事项第3、4条可修改的参数能注释一下吗?
可以 嘉岳呀 发表于 2023-2-5 14:45
注意事项第3、4条可修改的参数能注释一下吗?
第70行已注释 太强了,想起甲鱼的课后作业啥的都是有乱码的 hziyan 发表于 2023-2-5 20:25
太强了,想起甲鱼的课后作业啥的都是有乱码的
对,我就是受到这个启发做的。{:10_256:} 测试#include <windows.h>
#include <stdlib.h>
#pragma comment(lib,"....lib") liuhongrun2022 发表于 2023-2-4 08:33
但是就不能用背景了
为什么
我觉得可以啊...
页:
[1]
2