C 在确定字符数时打印数组

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;

我的目的是随机数字在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;
        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,直到它为零。。。你必须进行实验。谢谢,我会调查的!