变量不存储返回值

时间:2015-08-16 18:20:23

标签: c

我正在尝试创建一个将十六进制字符串转换为十进制的程序。但是我有一个问题是从findLength函数中分配返回的整数值。通过printf语句,我可以告诉findLength(theString)将产生正确的值,但是长度显示值为0,尽管我有length = findlength(theString)。

这不是一个家庭作业问题,我只是觉得为什么这个简单的作业不起作用。我已经宣布了长度,所以我知道这不是问题。我也没有得到编译器消息。任何帮助将不胜感激 编辑:我知道转换没有做任何有用的东西,并且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

1 个答案:

答案 0 :(得分:2)

变量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",findLength(theString));
printf("%d",length);

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

请注意上一个\n语句中%d之前的printf。这是0,因为您需要修复convert函数,这是result NOT length的值。