我正在尝试创建一个将十六进制字符串转换为十进制的程序。但是我有一个问题是从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
答案 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
的值。