C 在确定字符数时打印数组
我的目的是随机数字在0和1000之间,并打印数字有多少个字符?然后打印另一个数字,并将其字符号添加到字符号总数中。下面的代码编译,windows在运行后出现运行时错误。在代码中找不到错误。我的错误是什么C 在确定字符数时打印数组,c,arrays,C,Arrays,我的目的是随机数字在0和1000之间,并打印数字有多少个字符?然后打印另一个数字,并将其字符号添加到字符号总数中。下面的代码编译,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;
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;
}
%s
应该是%c
,因为您正在打印字符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
您正在存储i
,一个介于str
中0和9999之间的数字,一个字符串,然后获取该无效字符串的长度。如果要计算随机数中的数字,需要先使用sprintf(str,“%d”,i)将其转换为字符串您需要先将数字转换为字符串
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
它解决了运行时问题,但现在数字看起来像是奇怪的字符,比如>>>>Strlen计数数字,这部分没有错误printf(“%s”,str[k])代码>是错误的str[k]
是一个字符,而不是字符串。我已将其更改为%c,但现在它的打印数字如>>>我使用了您的建议,现在它的打印数字如>>>为什么?strlen似乎工作正常!我知道我会删除!但是请看我的评论@Psybonaut有几种方法可以做到这一点:手动计算字符,将数字除以10,直到它为零。。。你必须进行实验。谢谢,我会调查的!