【发布时间】:2016-04-20 18:52:12
【问题描述】:
我想通过一个函数修改一个字符并将其打印在屏幕上,但我的代码无法实现这个功能。这是我的源代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
long M = 2147483647;
void IntroduceError(char k[],double p)
{
int i;
for ( i = 0; i < 8; i++) {
if ((double)random()/M <= p)
k[i] = 1;
}
}
int main(int argc, char *argv[])
{
char test[] = "11110000";
double rate = atof(argv[1]);
IntroduceError(test, rate);
printf("\nErrored codeword is : %s\n",test);
return 0;
}
【问题讨论】:
-
它甚至不会编译。
-
什么是
get?您对哪个命令行的预期输出是什么? -
您的意思是
printf("\nErrored codeword is : %s\n",text);而不是printf("\nErrored codeword is : %s\n",get);?还要注意argv[1]是一个字符串,你的函数需要一个double,使用printf("\nErrored codeword is : %s\n",strtod(text, NULL)); -
对不起,我弄错了。现在它可以编译但我不能修改字符测试。我想在随机数小于0.01时修改每一位测试
-
2147483647应替换为RAND_MAX,random应替换为rand,k[i]=1应替换为k[i]='1'。如果我进行这些更改并使用足够高的速率参数,您的程序就会按照您的预期进行。