C 变量为';t存储返回值

C 变量为';t存储返回值,c,C,我试图制作一个程序,将十六进制字符串转换成十进制。但是,我在分配findLength函数返回的整数值时遇到问题。通过printf语句,我可以看出findleength(字符串)将产生正确的值,但是length显示为0,尽管事实上我的length=findleength(字符串) 这不是家庭作业的问题,我只是完全搞不懂为什么这个简单的作业不起作用。我已经声明了长度,所以我知道这不是问题所在。我也没有收到编译器消息。任何帮助都将不胜感激。 编辑:我知道convert没有做任何有用的事情,for循环需

我试图制作一个程序,将十六进制字符串转换成十进制。但是,我在分配findLength函数返回的整数值时遇到问题。通过printf语句,我可以看出findleength(字符串)将产生正确的值,但是length显示为0,尽管事实上我的length=findleength(字符串)

这不是家庭作业的问题,我只是完全搞不懂为什么这个简单的作业不起作用。我已经声明了长度,所以我知道这不是问题所在。我也没有收到编译器消息。任何帮助都将不胜感激。
编辑:我知道convert没有做任何有用的事情,for循环需要修复,但是这不应该影响findLength返回,对吗? 第二次编辑: 我总是提交一连串的“324”进行测试

#include <stdio.h>

int convert(char s[], int theLength);
int findLength(char s[]);

int main(){
    char theString[100];
    int result;
    int i;
    int length;


    printf("%s","Hello, please enter a string below.  Press enter when finished.");


    scanf("%s",theString);      //Apparently scanf is bad but we'll learn better input methods later.
                               //For my tests I submitted a string of '324'.  

    length = (findLength(theString));     //length = findLength('324')
    printf("%d",findLength(theString));   //yields 3
    printf("%d",length);                  //yields value of 0 always.

    result  = convert(theString, length);
    printf("%d\n result is",result);

    return 0;

}               //End of main

int convert(char s[], int theLength){       //This function will eventually converts a string of hex into ints.  As of now it does nothing useful.
    int i;
    int sum;


    for(i = theLength; i=0; i--){
        sum = sum + s[i];
        printf("%d\n",sum);
    }

    return sum;
}               //End of convert



int findLength(char s[]){
    int i;
    for(i = 0; s[i]!='\0'; ++i){
    }

    return(i);

}               //End of findLength
#包括
整数转换(字符s[],整数长度);
int findlelength(chars[]);
int main(){
字符串[100];
int结果;
int i;
整数长度;
printf(“%s”,“您好,请在下面输入一个字符串。完成后按enter键。”);
scanf(“%s”,字符串);//显然scanf不好,但我们稍后将学习更好的输入法。
//对于我的测试,我提交了一个字符串“324”。
长度=(findLength(字符串));//长度=findLength('324')
printf(“%d”,findLength(字符串));//结果为3
printf(“%d”,长度);//始终产生0的值。
结果=转换(字符串,长度);
printf(“%d\n结果为”,结果);
返回0;
}//主管道末端
int convert(char s[],int theLength){//此函数最终将把十六进制字符串转换为int。到目前为止,它没有任何用处。
int i;
整数和;
对于(i=长度;i=0;i--){
总和=总和+s[i];
printf(“%d\n”,总和);
}
回报金额;
}//转换结束
int findLength(字符s[]){
int i;
对于(i=0;s[i]!='\0';++i){
}
回报(i);
}//findLength的结尾

变量
length
正在存储正确的值。我想让你困惑的是你是如何安排你的
printf
语句的。如果您尝试下面这样的方法,则更容易看到您的代码工作正常

#include <stdio.h>

int findLength(char s[]);

int main(){
    char theString[100];
    int result;
    int i;
    int length;

    printf("Hello, please enter a string below. Press enter when finished.\n");

    scanf("%s",theString);

    length = (findLength(theString));
    printf("findLength(theString) = %d\n",findLength(theString));
    printf("length = %d\n",length);

    return 0;
}

int findLength(char s[]){
    int i;
    for(i = 0; s[i]!='\0'; ++i){
    }
    return(i);
}

注意最后一个
printf
语句中
%d
前面的
\n
。这是0,因为您的
convert
函数需要固定,这是
result
的值,而不是
i=0
-有些事情告诉我,您不是有意让它成为您的for循环条件。提高你的警告级别。如果设置为向后枚举,则应为(i=theLength;i--;)
Yes convert需要修复,但我遇到的问题与convert函数无关。我想知道为什么findLength的返回值没有存储到int-length变量中。如果您实际包含正在测试的输入字符串,这将非常有帮助。在解决上述问题之后。还可以修复不确定的初始值
sum
为什么要在printf中使用额外值?printf(“%s”,“您好,请在下面输入一个字符串。完成后按enter。”);。你的编译器是什么?代码可以工作。只需将
sum
的第一个值初始化为0,并将
更改为(i=theLength;i=0;0我的printf语句有什么问题?我知道它们不是100%有组织的,但它们仍然应该显示正确的值,对吗?@theBigDream它们确实显示正确的值,我认为正是它们的顺序让你感到困惑。目前,如果你输入问题中提到的“324”,你的代码输出<代码>330\结果是
。0来自
结果
而不是
长度
。哦……我明白了,我是个白痴。我认为在printf语句中,数字会跟在句子后面。
printf("%d",findLength(theString));
printf("%d",length);

printf("%d\n result is",result);