
1、打开手机里面的聊天工具微信软件。
2、点击发现的页面,并且点击朋友圈。
3、按住照相的图标1到2秒会出现发表说说的页面。这时候可以直接发表文字说说。
微信是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费社交程序,微信支持跨通信运营商,跨 *** 作系统平台通过网络快速发送免费语音短信,视频,和文字。
同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件“摇一摇”,“漂流瓶”,“朋友圈”,“公众平台”,“语音记事本”等服务插件。
/
实现原理:
首先是数据结构:由于只是以":"来分割, 所以采用键值对的模式
然后利用键值对获取原始文件中的数据, 在内存中比对参考键值对队列并进行修改文件中获取的键值对链表
将更新好的数据刷新到另一个文件中去
注意这个程序给出了文件替换的方法, 但是里面很多细节没有过多的处理
比如在文件末尾如果有换行符的情况没有给予考虑
内部也是只测试了小块的文件,对于大文件的适用性不知道会怎么样
/
#include <stdioh>
#include <stdlibh>
#include <stringh>
#define MYMAXLENGTH 20
#define SYM ':'
#define FILENAME "Filetxt"
#define SECFILENAME "FileIntxt"
typedef struct _Dict
{
char key[MYMAXLENGTH];
char value[MYMAXLENGTH];
struct _Dict pNext;
}Dict, pDict;
pDict InitKeyValueDict(int num);
bool InitFileWithData(char strFile);
bool GetDictFromFile(char strFile, pDict pdictlnk);
bool GetKeyValueByDict(char strdict, char symbol, pDict dict);
void ModifyFileDict(pDict fileDict, pDict dictArr, int num);
bool PutDictLnkToFile(char strFile, pDict pdictlnk);
void ModifyMode(char orifile, char file);
void MemFreeBlock(pDict dictBlock);
void MemFreeLnk(pDict dictLnk);
int main(void)
{
if(!InitFileWithData(FILENAME))
{
printf("文件初始化失败!\n");
exit(-1);
}
pDict dictLnk = (pDict)malloc(sizeof(Dict));
dictLnk->pNext = NULL;
if (!GetDictFromFile(FILENAME, dictLnk))
{
printf("文件内容拷贝错误!\n");
exit(-1);
}
int num=0; // 记录比对字典中值的个数
pDict dictArr = InitKeyValueDict(&num);
ModifyFileDict(dictLnk, dictArr, num);
PutDictLnkToFile(SECFILENAME, dictLnk);
ModifyMode(FILENAME, SECFILENAME);
MemFreeBlock(dictArr);
MemFreeLnk(dictLnk);
return 0;
}
pDict InitKeyValueDict(int num)
{// 初始化比对的数据字典
pDict dictArr = (pDict)malloc(sizeof(Dict)4);
char tmp[20] = {'\0'};
for (int i=0; i<4; i++)
{
strcpy(dictArr[i]key, tmp);
strcpy(dictArr[i]value, tmp);
}
strcpy(dictArr[0]key, "主题");
strcpy(dictArr[0]value, "儿童节");
strcpy(dictArr[1]key, "作者");
strcpy(dictArr[1]value, "栗子");
strcpy(dictArr[2]key, "版本");
strcpy(dictArr[2]value, "10");
strcpy(dictArr[3]key, "分辨率");
strcpy(dictArr[3]value, "WVGA");
num = 4;
return dictArr;
}
bool InitFileWithData(char strFile)
{// 初始化原始文件中的内容
bool flg = true;
FILE fp;
fp = fopen(strFile, "w+");
if (fp == NULL)
{
printf("Failed to open file: %s!\n", strFile);
exit(-1);
}
fprintf(fp, "themename:儿童节\n");
fprintf(fp, "author:栗子\n");
fprintf(fp, "version:10\n");
fprintf(fp, "screen:WVGA"); // 这个地方不要再添加换行
fclose(fp);
return flg;
}
bool GetDictFromFile(char strFile, pDict pdictlnk)
{// 从文件中获取数据
bool flg = true;
FILE fp;
fp = fopen(strFile, "r+");
if (NULL == fp)
{
printf("Failed to open file: %s\n", strFile);
return false;
}
char tmp[MYMAXLENGTH];
while (!feof(fp))
{
pDict dictnode = (pDict)malloc(sizeof(Dict));
dictnode->pNext = NULL;
fgets(tmp, MYMAXLENGTH, fp);
GetKeyValueByDict(tmp, SYM, dictnode);
pdictlnk->pNext = dictnode;
pdictlnk = pdictlnk->pNext;
}
pdictlnk->pNext = NULL; // 这个一定不要漏掉
fclose(fp);
return flg;
}
bool GetKeyValueByDict(char strdict, char symbol, pDict dict)
{// 从合法字符串中构造一个键值对
bool flg = true;
int i=0;
while (strdict!=symbol && strdict!='\0' && strdict!='\n') // 注意换行也不要
{
dict->key[i] = strdict;
strdict++;
i++;
}
dict->key[i] = '\0'; // 这个很重要, 否则待会在外部进行比较的时候会出错
if (strdict == '\0')
{
flg = false;
}
else
{
strdict++; i=0;
while (strdict!='\0' && strdict!='\n')
{
dict->value[i]=strdict;
strdict++;
i++;
}
dict->value[i] = '\0';
}
return flg;
}
void ModifyFileDict(pDict fileDict, pDict dictArr, int num)
{// 修改存储在内存中的键值对链表的值
// char tmp[20] = {'\0'};
while ((fileDict=fileDict->pNext) != NULL)
{
for (int i=0; i<num; i++)
{
if (strcmp(dictArr[i]value, fileDict->value) == 0)
{
printf("hah\n");
// strcpy(fileDict->key, tmp);
strcpy(fileDict->key, dictArr[i]key);
break;
}
}
}
return ;
}
bool PutDictLnkToFile(char strFile, pDict pdictlnk)
{// 将键值对链表保存到指定文件中
bool flg = true;
FILE fp;
fp = fopen(strFile, "w+");
if (!fp)
{
printf("Failed to open file: %s\n", strFile);
return false;
}
while (pdictlnk=pdictlnk->pNext)
{
fprintf(fp, "%s:%s\n", pdictlnk->key, pdictlnk->value);
}
fclose(fp);
return flg;
}
void ModifyMode(char orifile, char file)
{// 是否使用修改模式来, 其实质就是先删除原始文件, 再修改附加文件名称
char flg;
printf("如果覆盖原始数据, 请选择 Y\n");
scanf("%c", &flg);
if (tolower(flg) == 'y')
{
unlink(orifile);
rename(file, orifile);
}
return ;
}
void MemFreeBlock(pDict dictBlock)
{// 释放连续堆内存
free(dictBlock);
dictBlock = NULL;
return;
}
void MemFreeLnk(pDict dictLnk)
{// 释放链表
pDict tmp = dictLnk;
while (dictLnk=dictLnk->pNext)
{
free(tmp);
tmp = dictLnk;
}
free(tmp);
tmp = NULL;
return ;
}
/
这个是我自己尝试去写的一个关于你这个问题的程序, 用你上面给出的测试数据来测试还是可以的, 你自己也运行试试, 如果有什么不好的地方一起修改下 ~_~
/
2个常用办法
1:打开这个记事本,文件-另存为-在保存类型里面选择
所有文件-在文件名后面加上bat
2:打开一个文件夹--工具--文件夹选项--查看--去掉
隐藏已知文件类型的扩展名
上的勾,确定
你是说得批处理吧?
这是网络上十分经典的批处理教程,希望对你有帮助。
这是一篇技术教程,真心诚意会用很简单的文字表达清楚自己的意思,只要你识字就能看懂,就能学到知识。写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更简单,那么就让它简单吧!看这篇教程的方法,就是慢!慢慢的,如同品一个女人、一杯茗茶,你会发现很多以前就在眼前的东西突然变的很遥远,而有些很遥远的东西却又突然回到了眼前。
先概述一下批处理是个什么东东。批处理的定义,至今我也没能给出一个合适的----众多高手们也都没给出----反正我不知道----看了我也不一定信服----我是个菜鸟,当然就更不用说了;但我想总结出一个"比较合适的",而且我也相信自己可以把它解释的很清楚,让更多的菜鸟都知道这是个什么东东,你用这个东东可以干什么事情。或许你会因为这篇文章而"无条件爱上批处理",那么我的目的就达到了----我就是要让你爱上它,我就这么拽,你能怎么着??真的,爱有时候就这么拽,就是这么没理由,就是这么不要脸!真的!
按照我的理解,批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合。
OK,never claver and get to business(闲话少说言归正传)。批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母。它的构成没有固定格式,只要遵守以下这条就ok了:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。批处理有一个很鲜明的特点:使用方便、灵活,功能强大,自动化程度高。我不想让自己写的教程枯燥无味,因为牵缠到代码(批处理的内容算是代码吧?)的问题本来就是枯燥的,很少有人能面对满屏幕的代码而静下心来。所以我会用很多简单实用的例子让读这篇教程的朋友去体会批处理的那四射的魅力,感受它那古灵精怪的性格,不知不觉中爱上批处理(晕,怎么又是爱?到底批处理和爱有什么关系?答案:没有!)。再说句"闲话":要学好批处理,DOS基础一定要牢!当然脑子灵活也是很重要的一方面。
例一、先给出一个最easy的批处理脚本让大家和它混个脸熟,将下面的几行命令保存为namebat然后执行(以后文中只给出代码,保存和执行方式类似):
ping sztencentcom > atxt
ping sz1tencentcom >> atxt
ping sz2tencentcom >> atxt
ping sz3tencentcom >> atxt
ping sz4tencentcom >> atxt
ping sz5tencentcom >> atxt
ping sz6tencentcom >> atxt
ping sz7tencentcom >> atxt
exit
是不是都能看的懂?是不是很easy?但它的作用却是很实用的,执行这个批处理后,可以在你的当前盘建立一个名为atxt的文件,它里面记录的信息可以帮助你迅速找到速度最快的QQ服务器,从而远离"从服务器中转"那一痛苦的过程。这里>的意思,是把前面命令得到的东西放到后面所给的地方,>>的作用,和>的相同,区别是把结果追加到前一行得出的结果的后面,具体的说是下一行,而前面一行命令得出的结果将保留,这样可以使这个atxt文件越来越大(想到如何搞破坏了??)。By the way,这个批处理还可以和其他命令结合,搞成完全自动化判断服务器速度的东东,执行后直接显示速度最快的服务器IP,是不是很爽?后面还将详细介绍。
例二、再给出一个已经过时的例子(abat):
@echo off
if exist C:\Progra~1\Tencent\AD\gif del C:\Progra~1\Tencent\AD\gif
abat
为什么说这是个过时的例子呢?很简单,因为现在已经几乎没有人用带广告的QQ了(KAO,我的QQ还显示好友三围呢!!),所以它几乎用不上了。但曾经它的作用是不可小窥的:删除QQ的广告,让对话框干干净净。这里用的地址是QQ的默认安装地址,默认批处理文件名为abat,你当然可以根据情况自行修改。在这个脚本中使用了if命令,使得它可以达到适时判断和删除广告的效果,你只需要不关闭命令执行后的DOS窗口,不按CTRL+C强行终止命令,它就一直监视是否有广告(QQ也再不断查看自己的广告是否被删除)。当然这个脚本占用你一点点内存,呵呵。
例三,使用批处理脚本查是否中冰河。脚本内容如下:
@echo off
netstat -a -n > atxt
type atxt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del atxt
pause & exit
这里利用了netstat命令,检查所有的网络端口状态,只需要你清楚常见木马所使用的端口,就能很easy的判断出来是否被人种了冰河。然这不是确定的,因为冰河默认的端口7626,完全可以被人修改。这里介绍的只是方法和思路。这里介绍的是方法和思路稍做改动,就变成可以检查其他木马的脚本了,再改动一下,加进去参数和端口及信息列表文件后,就变成自动检测所有木马的脚本了。呵呵,是不是很过瘾?脚本中还利用了组合命令&&和管道命令|,后面将详细介绍。
例四,借批处理自动清除系统垃圾,脚本如下:
@echo off
if exist c:\windows\temp\ del c:\windows\temp\
if exist c:\windows\Tempor~1\ del c:\windows\Tempor~1\
if exist c:\windows\History\ del c:\windows\History\
if exist c:\windows\recent\ del c:\windows\recent\
将以上脚本内容保存到autoexecbat里,每次开机时就把系统垃圾给自动删除了。这里需要注意两点:一、DOS不支持长文件名,所以就出现了Tempor~1这个东东;二、可根据自己的实际情况进行改动,使其符合自己的要求。怎么样,看到这里,你对批处理脚本是不是已经有点兴趣了?是不是发现自己已经慢慢爱上了这个东东?别高兴的太早,爱不是一件简单的事,它也许能带给你快乐和幸福,当然也能让你痛苦的想去跳楼。如果你知道很难还敢继续的话,I 服了 YOU!继续努力吧,也许到最后你不一定得到真爱(真的有这可能,爱过的人都知道),但你可以体会到整个爱的过程,就是如此。 酸、苦和辣,有没有甜天知道。为什么会把批处理和爱情扯上关系?不是我无聊,也不是因为这样写有趣多少,原因有二:其一,批处理和爱情有很多相同的地方,有些地方我用"专业"的行话解释不清(我不怀疑自己的表达能力,而是事情本身就不好说清楚),说了=没说,但用地球人都知道的爱情一比喻(爱情是什么?我怎么知道!!),没准你心里一下就亮堂了,事半功倍,何乐而不为?其二,我这段时间状态不是很好,感冒发烧头疼鼻塞,但主要还是感情上精神摧残,搞的人烦透了,借写教程之际感慨几句,大家就全当买狗皮膏药了,完全可以省略不看(也许还真有点效果----不至于让你看着看着就睡着了,把头磕了来找我报销医药费)。说不定下次的教程中大家还会看到杨过、张无忌等金老前辈笔下的英雄们。
看过第一章的朋友,一定对批处理有了初步的印象,知道它到底是用来干什么的了。但你知道运用批处理的精髓在哪里吗?其实很简单:思路要灵活!没有做不到的,只有想不到的。这和爱情就有点不同了,因为爱情的世界是两个人的世界,一厢情愿不叫爱情(补充:那叫单恋。废话!)而批处理却是一个人的天堂,你可以为所欲为,没有达不到的境界!
常用的有两种,一种是vbs或者vbe,另一种是bat或者cmdvbs或者vbe 是VB的脚本程序,通过wscriptexe程序翻译执行的,编程语法和VB大同小异。bat或者cmd 是DOS的命令集,或者叫批处理,其实就是把dos命令集合到一起重复利用。如:with createobject("wscriptshell")
run "shutdown -r -t 120 -c 计算机即将关机请如实回答问题即可取消关机",0
while a<>"让"
a=inputbox("说,让不让干?","快说","不让")
wend
run "shutdown -a",0
msgbox "O(∩_∩)O~~~"+vbcrlf+vbcrlf+"早说不就完了",64+4096,"*荡的笑"
end with保存为“给你的祝福vbs”或者“给你的祝福vbe”如:@echo off
title 请从容的回答下列问题
color 3f
shutdown -r -t 120 -c 计算机即将关机请如实回答问题即可取消关机
:str
set cik=
clsset /p cik=让不让干
if "%cik%"=="让" goto end
goto str:end
echo 早说不就完了
shutdown -a
pause>nul保存为“给你的祝福bat”或者“给你的祝福cmd”
在桌面上点鼠标右键,选择新建一个“记事本”,把下面的字复制进去,点“另存为”,把文件名定为“清除系统LJbat”就完成,记住后缀名一定要是bat,好ok了!你的垃圾清除器就这样制作成功了!双击它就能很快地清理垃圾文件,大约一分钟不到。
PS 要复制进去的字是 见下 (红色部分)
@echo off
echo 正在清除系统垃圾文件,请稍等
del /f /s /q %systemdrive%\tmp
del /f /s /q %systemdrive%\_mp
del /f /s /q %systemdrive%\log
del /f /s /q %systemdrive%\gid
del /f /s /q %systemdrive%\chk
del /f /s /q %systemdrive%\old
del /f /s /q %systemdrive%\recycled\
del /f /s /q %windir%\bak
del /f /s /q %windir%\prefetch\
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\
del /f /q %userprofile%\recent\
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\"
del /f /s /q "%userprofile%\Local Settings\Temp\"
del /f /s /q "%userprofile%\recent\"
echo 清除系统LJ完成!
echo & pause
以后只要双击运行该文件,当屏幕提示“清除系统LJ完成!就还你一个“苗条”的系统了!!附:重启电脑的若干方法
1 alt+F4多次直到系统提示是否重启
2 ctrl+alt+del选择重启选项
3 按windows 键,再按一下U和R
4 直接按主机上的重启键
以上就是关于微信怎么发文字朋友圈小程序全部的内容,包括:微信怎么发文字朋友圈小程序、求高手做个小小程序 要求将记事本中的英文标识(一样的)替换为相对应的中文,例子如补充、用易语言小程序 打卡txt记事本文件 或者bat批处理文件该怎么做呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)