我正在为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
答案 0 :(得分:1)
啊,MSDN函数......好吧,_itoa_s()需要4个参数,你只给它3个,因此错误说它不需要3个参数。
errno_t _itoa_s(
int value,
char *buffer,
size_t sizeInCharacters,
int radix
);
“没有重载函数的实例”告诉您,参数不超过1 _itoa_s()
函数。您似乎错过了radix
或sizeInCharacters
:
[in] sizeInCharacters
缓冲区的大小,单字节字符或宽字符 [in] radix
价值基础;必须在2-36范围内。