2016-05-06 8 views
3

Я пытаюсь ввести ряд чисел (т. Е. 123456789), а затем выводить их каждый за один раз (то есть 1, 2, 3, ... , 9). Однако после 9, который равен str[9], выходное значение будет случайным числом, таким как -48, 32, 9, -112. Как я могу убедиться, что выходные номера останавливаются на 9, так как последний номер, который у меня был, был 9?преобразовать символ в целое число

#include<stdio.h> 
#include<string.h> 

int main() 
{ 
    char str[100]; 
    int n,num[100]; 
    scanf("%s", str); 
    for(n=0;n<100;n++) 
    { 
     num[n] = str[n] - '0'; 
     printf("%d\n", num[n]); 
    } 
    return 0; 
} 
+2

остановить цикл, когда 'Обл [п] == 0 ' –

+1

' 'п <100' --> п <100 && ул [п]'. также 'str [8]' '' '9''. – BLUEPIXY

+0

Ничего себе, это было все, что нужно. Благодаря! –

ответ

0

Строка вам вход от scanf может быть меньше, чем 100 символов, используйте strlen, чтобы получить его размер:

int main(void) 
{ 
    char str[100] = {0}; 
    int num[100]; 
    size_t len, n; 
    scanf("%s", str); 
    len = strlen(str); 
    for(n=0;n<len;n++) 
    { 
     num[n] = str[n] - '0'; 
     printf("%d\n", num[n]); 
    } 
    return 0; 
} 

Примечание вы должны использовать int main(void), не int main().

0
  • Вы должны принять длину вами входной строки, используйте STRLEN (НТР), и хранить это значение одной переменной и до длины строки повернуть петлю. Вот именно:

  • Здесь я сделал:

#include<stdio.h> 
#include<string.h> 
int main() 
{ 
char str[100] = {}; 
int n = 0,count = 0,num[100] = {}; 
scanf(" %s", str); 
count = strlen(str); 
for(n = 0; n < count; n++) 
{ 
    num[n] = str[n] - '0'; 
    printf("%d\n", num[n]); 
} 
return 0; 
} 
0

вы можете сравнить значение ASCII.

#include<string.h> 
#include<stdio.h> 
int main(){ 
char str[100]; 
int n,num[100]=0; 
scanf("%s", str); 
while(str[n]<58 && str[n]>47){ 
    num[n] = n*num[n]+str[n]; 
n++; 
} 
printf("%d\n", num[n]); 
return 0; 

}

0

Похоже, вы должны обрабатывать входные данные один раз характер, в то время, а не как строки. Это устранило бы необходимость в кажущемся произвольном лимите 100 символов. Вы можете подтвердить, что символ - это цифра перед печатью, завершая цикл, когда первая незначная цифра найдена.

#include <ctype.h> 
char c; 
scanf("%c", c); 
while (isdigit(c)) 
{ 
    printf("%c\n", c); 
} 
Смежные вопросы