Я пытаюсь создать программу, которая преобразует шестнадцатеричную строку в десятичную. Однако у меня возникает проблема с назначением возвращаемого целочисленного значения из функции findLength. Переходя к операторам printf, я могу сказать, что findLength (theString) даст правильное значение, однако длина показывает значение 0, несмотря на то, что у меня длина = findlength (theString).Переменная не сохраняет возвращаемое значение
Это не проблема с домашней работой, я просто совершенно тупой, почему это простое задание не работает. Я уже объявил длину, поэтому я знаю, что это не проблема. Я также не получаю сообщений компилятора. Любая помощь будет принята с благодарностью.
Редактирование: я знаю, что конвертер не делает ничего полезного, и цикл for должен быть исправлен, но это не должно привести к правильному возврату findLength? Second Edit: Я всегда подавал строку «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-loop. Увеличьте уровни предупреждений. И если вы перечислили это в обратном направлении, он должен прочитать 'for (i = theLength; i -;)' – WhozCraig
Да, необходимо, чтобы преобразование было исправлено, но проблема, которую я имею, не связана с функцией преобразования. Мне интересно, почему возвращаемое значение findLength не сохраняется в переменной длины int. – theBigDream
Это очень помогло бы, если бы вы включили строку ввода * verbatim *, с которой вы тестируете. После адресации, упомянутого выше, [см. Его вживую] (http://ideone.com/T6nOgH). Также исправьте свое неопределенное начальное значение 'sum' – WhozCraig