У меня есть программа, которая принимает массив символов и вызывает функцию convert. Функция определяет, является ли символ буквой или номером. Предполагается, что программа выводит первую букву, которую она находит в строке. и первые числа, которые он находит в строке. Моя петля, чтобы перестать искать буквы после того, как находит ее, не работает.Петля с простым счетчиком неисправна?
Любые мысли? Код написан на C с использованием компилятора Borland.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int convert (char array[],char **);
int main()
{
int intval;
char array[512], *charptr;
printf("Input a string that starts with a series of decimal digits:\n>");
while (gets(array) != NULL){
intval = convert(array, &charptr);
printf ("Intval contains %d, Charptr contains '%s'\n", intval, charptr);
}
system("pause");
return 0;
}
int convert (char array[],char ** charptr)
{
int i, x, c = 0;
char b[512];
for (i=0;i<strlen(array);i++){
if (isalpha(array[i]))
{
if(c >= 1){
*charptr = &array[i];
c++;
}
else
break;
}
else if (isdigit(array[i]))
x = 10*x + array[i] - '0';
}
return x;
}
UPDATE:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int convert (char array[],char ** charptr);
int main()
{
int intval;
char array[512], *charptr;
printf("Input a string that starts with a series of decimal digits:\n>");
while (gets(array) != NULL){
intval = convert(array, &charptr);
printf ("Intval contains %d, Charptr contains '%s'\n", intval, charptr);
}
system("pause");
return 0;
}
int convert (char array[],char ** charptr)
{
int i, x, c;
char b[512];
for (i=0;array[i] != 0;i++){
if (isdigit(array[i]))
x = 10*x + array[i] - '0';
else if (isalpha(array[i]))
{
c++;
if(c >= 1){
*charptr = &array[i];
}
}
}
return x;
}
Вы прошли через код с помощью отладчика? – pm100
Подсказка: 'if (c> = 1) {' никогда не является истиной. – chux
1. charptr должен быть выделен перед использованием 2. Это плохо: for (i = 0; i
AlexanderVX