-4

[我正在使用以下代码

void fix_filename(char[], char[], int);

int  main(){
    int i;
    char k,l[100];

    cin >> i;
    fix_filename(l,"books",i);
    cout << "Stringis: ";
    puts(l);

    return 0;
}

void fix_filename(char k[] ,char pre[] ,int n){
    int i = 0, div, r = 0, pk;
    char temp, str[100];
    div = n;

    while(div!=0){
        r = div % 10;
        k[i] = 48+r;
        div=div / 10;
        i++;
    }

    k[i] = '\0';

    pk = strlen(k);

    for(i=0;i<pk/2;i++){
        temp = k[i];
        k[i] = k[pk-i-1];
        k[pk-i-1]=temp;
    }

    k = strcat(pre,k);
}

但是我的字符串充满了垃圾值(字符串 l[100]).. 如何让它在 turbo c/c++ 中通过引用传递?

我使用 turbo c/c++ 的原因是它是分配,我不能使用任何其他编译器。

我希望字符串 (l) 的输出是 books121 ,其中 121 是输入。

4

2 回答 2

1

在 C 中,编译器解释函数声明

void fix_filename( char []  ,char [] ,int );  

作为

void fix_filename( char *  ,char * ,int );  

这意味着您需要将指向cahr( char *) 的指针传递给您的函数。但是你正在传递char l你的功能。

fix_filename(l,"books",i);
于 2013-10-13T13:43:28.793 回答
1
void fix_filename(char k[] ,char pre[] ,int n )

在此函数中,您希望接收 achar[]作为第一个参数,而在 中main(),您传递的是单个字符

我建议你学习更深入地讲课并使用好的编译器。

于 2013-10-13T13:45:32.803 回答