ITOA功能如何修复20行

时间:2014-03-16 13:41:35

标签: c

我正在为RLE压缩编写代码,但是我在20行中遇到了itoa函数的问题。我怎么能解决这个问题?我是C的新手,所以如果你能让我的代码有一部分变化,我会很高兴的。谢谢! (对不起重复,但我不能发表评论)如果你指出我应该插入更改的部分,我将不胜感激!!!!

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void StringRLE(char *pointer)    {
    char *rle = new char[strlen(pointer)];
    int i = 0;
    int rleCount = 1;
    char *s = pointer + 1, ch[2] = { 0, 0 };
    while (*pointer != '\0')        {
        if (*pointer == *s)
            rleCount++;
        else{
            _itoa_s(rleCount, rle, 10);
            ch[0] = *pointer;
            strcat(rle, ch);
            puts(rle);
            rleCount = 1;
        }

        pointer++;
        s++;
        i++;
    }
}

错误:

Error C2660 Function Does Not Take 3 Arguments ;No instance of overload function

1 个答案:

答案 0 :(得分:1)

啊,MSDN函数......好吧,_itoa_s()需要4个参数,你只给它3个,因此错误说它不需要3个参数。

errno_t _itoa_s(
   int value,
   char *buffer,
   size_t sizeInCharacters,
   int radix 
);

“没有重载函数的实例”告诉您,参数不超过1 _itoa_s()函数。您似乎错过了radixsizeInCharacters

  

[in] sizeInCharacters
  缓冲区的大小,单字节字符或宽字符   [in] radix
  价值基础;必须在2-36范围内。