不使用itoa将int转换为字符串

时间:2011-10-28 00:11:15

标签: c++ visual-c++

#include <stdio.h>
//#include <<strong class="highlight">string</strong>.h>

// Function declarations
// typedef __w64 unsigned int size_t
size_t strlen(const char *);
char *strrev(char *);
char *itoa(int, char *, int);

int main() {
    int num = 123;
    char buf[5];

    itoa(num, buf, 10);

    printf("%s\n", buf);

    return 0;
}

size_t strlen(const char *string) {
    const char *s;

    s = <strong class="highlight">string</strong>;
    while (*s)
        s++;
    return s - <strong class="highlight">string</strong>;
}

char *strrev(char *str) {
    char *p1, *p2;

    if (!str || !*str)
        return str;

    for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2) {
        *p1 ^= *p2;
        *p2 ^= *p1;
        *p1 ^= *p2;
    }

    return str;
}

char *itoa(int n, char *s, int b) {
    static char digits[] = "0123456789abcdefghijklmnopqrstuvwxyz";
    int i=0, sign;

    if ((sign = n) < 0)
        n = -n;

    do {
        s[i++] = digits[n % b];
    } while ((n /= b) > 0);

    if (sign < 0)
        s[i++] = '-';
    s[i] = '\0';

    return strrev(s);
}

在这部分问题上收到错误......

s = string;     而(* s)         小号++;     return s - string;

说缺少'class':缺少标签名称    和语法错误:&lt;

我不知道如何解决它..尝试各种各样的东西..

任何帮助将不胜感激..

非常感谢

1 个答案:

答案 0 :(得分:3)

看起来你已经以某种方式在你的C ++源代码中获得了HTML标记:

s = <strong class="highlight">string</strong>;
while (*s)
    s++;
return s - <strong class="highlight">string</strong>;

我会继续修复它,但错误消息指的是<字符,所以我认为这是你的实际问题。也许您错误地从某个网页上复制并粘贴了代码?

编辑:我看到@RayToal已经根据您的问题编辑了HTML。