我想通过使用函数修改char并将其打印在屏幕上但我的代码无法实现此功能。这是我的源代码:
#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;
}
答案 0 :(得分:1)
k
是一个字符串,即字符数组,但您要为其分配一个整数值。
而不是:
k[i] = 1;
你可能想要:
k[i] = '1';
另外,你应该在你的程序开始时调用srandom
种子随机数生成器,至少传入PID,即srandom(getpid());
,这样你就不会得到同样的每次都有结果。
答案 1 :(得分:-1)
get
语句中的 printf
未定义。如果您使用get
更改test
,则应进行编译。