求修改代码求懂Linux下c语言的大神帮忙修改一下代码

qq_35511578 2018-06-18 02:09:39
请求大神帮忙修改一下代码,谢谢各位大神。
这个是Linux 下的c语言。

要修改的就是这段代码:
void build_request(const char *url)
{
#define PROGRAM_VERSION "1.5"
strcat(request,"User-Agent: Web"PROGRAM_VERSION"\r\n");
}

上面出来的结果是:User-Agent: Web1.5
但是我想把 User-Agent: 前面的 Web1.5 修改成随机的字符串,并且每一次随机的长度都不一样(长度不能超过20个字符串),需要数字+英语组成。
想要的结果,显示成以下这样(举列子,随机出来的效果):
User-Agent: dsa456dsa15d4as56
User-Agent: 4ds58ds75dsa
User-Agent: www8844s4s4ssss
User-Agent: w88ss

就是 User-Agent: 不变,但是后面的字符串会变,并且每运行一次的长度都不一样,字符串也不一样。修改成这样就OK了。
希望有大佬出手帮帮忙谢谢。
太高级的小弟也看不懂。希望大神可以修改成小弟看得懂的。
能把那个随机字符串的封装成一个函数就行了。

void build_request(const char *url)
{
strcat(request,suiji());
}

void suiji() //这个是您封装好的函数
{
//jg的变量就是大神您写好的,随机生成字符串的代码。处理后的结果
return "User-Agent: "+jg+"\r\n";
}

还请会的大佬,带上代码加我qq。1526899337,这个是Linux下的c语言代码,求大佬帮帮忙。
...全文
799 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
二班的码农 2018-06-18
  • 打赏
  • 举报
回复
你可以通过当前时间初始化随机种子 #include <time.h> 在主函数里生成字符串之前加一句 srand (time(NULL)); 红包就不用了,我也是闲着无事,逛逛论坛,在解决别人问题的同时,自己也学习学习
二班的码农 2018-06-18
  • 打赏
  • 举报
回复
qq: 1060211273
qq_35511578 2018-06-18
  • 打赏
  • 举报
回复
引用 7 楼 ant2012 的回复:
generateLettersOrNumbers 中的 int letterCount = rand() % (MAX_COUNT - 1) + 1; // 为满足至少有一个数字,字母数最多为 MAX_COUNT - 1 int numCount = rand() % (MAX_COUNT - letterCount) + 1; 可以删掉,没用
大神您好,我刚刚按您说的 可以了。但是我把 main 函数里面的循环去掉后。 int main(int argc, char* argv[]) { char* str = generateLettersOrNumbers(); printf("%s\r\n", str); free(str); getchar(); return 0; } 然后关闭程序,在打开程序,每一次运行的结果都是一样的。 只有加上循环语句才会不一样。请问要怎么修改成。不用循环语句。我关闭程序后,在打开结果又不一样。 您能方便留下联系方式吧。想发个红包表示感谢
二班的码农 2018-06-18
  • 打赏
  • 举报
回复
generateLettersOrNumbers 中的 int letterCount = rand() % (MAX_COUNT - 1) + 1; // 为满足至少有一个数字,字母数最多为 MAX_COUNT - 1 int numCount = rand() % (MAX_COUNT - letterCount) + 1; 可以删掉,没用
二班的码农 2018-06-18
  • 打赏
  • 举报
回复
这个就是你要求的(长度不能超过20个字符串)
二班的码农 2018-06-18
  • 打赏
  • 举报
回复
在include下,加一个#define MAX_COUNT 20
qq_35511578 2018-06-18
  • 打赏
  • 举报
回复
引用 2 楼 ant2012 的回复:
这是在cpp环境中运行的,可能会有定义变量必须在函数体前面的问题,你稍微改下就好
能留下您的qq或者其他联系吗 表示想感谢一下
qq_35511578 2018-06-18
  • 打赏
  • 举报
回复
引用 2 楼 ant2012 的回复:
这是在cpp环境中运行的,可能会有定义变量必须在函数体前面的问题,你稍微改下就好
大神您好,我使用您代码,他显示 error C2065: 'MAX_COUNT' : undeclared identifier 这个我要怎么修改呢
二班的码农 2018-06-18
  • 打赏
  • 举报
回复
这是在cpp环境中运行的,可能会有定义变量必须在函数体前面的问题,你稍微改下就好
二班的码农 2018-06-18
  • 打赏
  • 举报
回复
char generateLetter() { return rand() % 26 + 'a'; } char generateNum() { return rand() % 10 + '0'; } char* generateLettersOrNumbers() { int letterCount = rand() % (MAX_COUNT - 1) + 1; // 为满足至少有一个数字,字母数最多为 MAX_COUNT - 1 int numCount = rand() % (MAX_COUNT - letterCount) + 1; int totalCount = rand() % MAX_COUNT + 1; bool existLetter = false; bool existNum = false; char* str = (char*)malloc(totalCount + 1); // 随机生成totalCount-1个字母或数字 int i = 0; for (; i < totalCount - 1; i++) { if (rand() % 2 == 0) { existLetter = true; str[i] = generateLetter(); } else { existNum = true; str[i] = generateNum(); } } // 如何前面生成的字符中没有字母或数字,则补齐 if (existLetter && existNum) { // 字母和数字都有 if (rand() % 2 == 0) { str[i] = generateLetter(); } else { str[i] = generateNum(); } } else if (!existLetter) { // 没有字母 str[i] = generateLetter(); } else { // 没有数字 str[i] = generateNum(); } str[totalCount] = '\0'; return str; } int main(int argc, char* argv[]) { for (int i = 0; i < 10; i++) { char* str = generateLettersOrNumbers(); printf("%s\r\n", str); free(str); } getchar(); }

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧