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