我的意图是0到0之间的随机数。 1000并打印数字有多少mamy字符?然后打印另一个数字并将其字符编号添加到字符编号的总和中。编码以下编译,并且Windows在运行后发出运行时错误。无法在代码中找到错误。我的错误是什么?
int main()
{
char str [1000];
int i=0;
int k,a=0;
printf("Number \tTotal\n");
for(k=0;k!=10;k++)
{
i=rand()%1000;
str[k]=i;
printf("%s",str[k]);
a+=strlen(str);
printf("%s \t%d\n",str[k],a);
}
getch();
return 0;
}
答案 0 :(得分:1)
您需要先将数字转换为字符串。
i = rand() % 1000;
length = snprintf(str, 1000, "%d", i); // Convert integer to string
printf("%s", str); // Print current string
a += length; // Add length
printf("%s \t%d\n", str, a); // Print current string and length so far
答案 1 :(得分:0)
%s
应为%c
,因为您只是打印char
。 a+=strlen(str)
将之前的strlen
添加到一起。当您打印当前char
以及最近str
的长度时。
int j
也未使用。
您正在打印str[k]
两次,因此"双打"在线上的字符。如果你想存储一个更合理的结果,那么将随机数减少到100.此外,我会在循环中的每次迭代后将a
重置为0。
带有更改的示例输出:
Sayi Toplam
S 5
V 5
M 5
5
] 5
# 6
V 7
\ 10
1 10
10
答案 2 :(得分:0)
您正在存储i
,一个介于0和9999之间的数字str
,一个字符串,然后获取该无效字符串的长度。如果要计算随机数中的数字,则需要先使用sprintf(str,"%d",i)
将其转换为字符串。