在确定字符数时打印阵列

时间:2014-03-24 14:56:33

标签: c arrays

我的意图是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;




    }

3 个答案:

答案 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,因为您只是打印chara+=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)将其转换为字符串。