【发布时间】:2015-11-09 09:13:00
【问题描述】:
我正在尝试制作一个将十六进制字符串转换为十进制的程序。但是,我在从 findLength 函数分配返回的整数值时遇到问题。通过 printf 语句,我可以看出 findLength(theString) 将产生正确的值,但是尽管我有 length = findlength(theString),但长度显示的值为 0。
这不是作业问题,我只是对为什么这个简单的作业不起作用感到非常困惑。我已经声明了长度,所以我知道这不是问题。我也没有收到任何编译器消息。任何帮助将不胜感激。
编辑:我知道 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
【问题讨论】:
-
i=0- 有件事告诉我,你并不是有意将其作为你的 for 循环条件。调高你的警告级别。如果您打算向后枚举,它应该是for(i=theLength; i--;) -
是的转换需要修复,但我遇到的问题与转换功能无关。我想知道为什么 findLength 的返回值没有存储到 int 长度变量中。
-
如果您实际上包含了您正在测试的输入字符串 verbatim,这将非常有帮助。在解决上述问题后,see it live。还修复了
sum的不确定初始值 -
为什么在 printf 中有额外的内容? printf("%s","您好,请在下面输入一个字符串。完成后按回车。");.
-
你的编译器是什么代码可以工作ideone.com/cpi2C9。只需将
sum的第一个值初始化为 0 并更改for(i = theLength; i=0; 0<=i; i--)
标签: c