не могу исправить ошибку...СИ

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by darankos, 6 Mar 2012.

  1. darankos

    darankos New Member

    Joined:
    18 Jul 2010
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    #include <string.h>
    #include <stdio.h>
    #include <windows.h>
    #include <stdlib.h>

    int NumDigits(char s[])
    {
    int i,count=0;
    for(i=0; i<strlen(s); i++)
    if (strchr("0123456789",s ) )
    count++;
    return count;

    }

    void main2()
    {
    char s[80];
    int n;
    printf("Введите строку\n");
    gets_s(s);
    n=main(s);
    printf("%d",n);
    }
    Ошибка 1:
    warning C4018: <: несоответствие типов со знаком и без знака
    Ошибка 2:
    error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup
    1>C:\VS 2010\Test\string\Debug\string.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
     
  2. darankos

    darankos New Member

    Joined:
    18 Jul 2010
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    for(i=0; i<strlen(s); i++)
    в этой строке ошибка. понять не могу что не так...
    на 2ую ошибку не обращайте внимания)))
     
  3. Osstudio

    Osstudio Banned

    Joined:
    17 Apr 2011
    Messages:
    638
    Likes Received:
    160
    Reputations:
    81
    я СИ не знаю, но на C# цикл звучит так:
    for(int i=0; i < s.Length; ++i)
    {
    Console.WriteLine("{} лол пошёл!",i);
    }

    А если мне не изменяет память, к char не применяется >,< и т.п
     
  4. $Robin

    $Robin Member

    Joined:
    25 Jun 2010
    Messages:
    47
    Likes Received:
    5
    Reputations:
    0
    for(i=0; (unsigned)i<strlen(s); i++)

    Вроде на русском языке написано что не так -__-

    [​IMG]
     
    #4 $Robin, 6 Mar 2012
    Last edited: 6 Mar 2012
  5. Kavabango

    Kavabango New Member

    Joined:
    14 Nov 2008
    Messages:
    44
    Likes Received:
    0
    Reputations:
    0
    strlen возвращает size_t . Это по сути тот же unsigned int. Поменяй тип i или сделай явное приведение типов (int)strlen()

    http://www.cplusplus.com/reference/clibrary/cstring/strlen/
     
  6. m1nt@ll

    m1nt@ll New Member

    Joined:
    9 Feb 2012
    Messages:
    19
    Likes Received:
    1
    Reputations:
    0


    Переименуй main2 в main...

    PS. Сорри, недочитал до конца :( int i поменяй на size_t i. А лучше вообще не обращай внимание..
    Можно отключить так: #pragma warning( disable: 4018 )
     
    #6 m1nt@ll, 7 Mar 2012
    Last edited: 7 Mar 2012
  7. darankos

    darankos New Member

    Joined:
    18 Jul 2010
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    int main()
    {
    char a[]="123321\0";
    int count=0;
    for (int i = 0; i < int (strlen(a)); i ++ )
    {
    if (strchr("0123456789",a ) )
    count++;
    printf("%d \n",count);
    return count;
    }
    оказалось правильным,теперь не могу понять,когда вывожу i, то оно = 0. когда вывожу a , то оно = 49.когда вывожу count ,то оно = 1...
    почему выводит такие числа?
     
  8. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8


    Скидывай весь код.
     
  9. darankos

    darankos New Member

    Joined:
    18 Jul 2010
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    :
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>

    int main()
    {
    char a[]={"0"};
    int count=0;
    for (int i = 0; i < int (strlen(a)); i ++ )
    {
    if (strchr("0123456789",a ) )
    count++;
    printf("%d \n",a);
    return count;

    }
    :D
     
  10. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8


    и где здесь выводится i, count, и a?
     
  11. darankos

    darankos New Member

    Joined:
    18 Jul 2010
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    я иммею в виду ,если printf("%d \n",a); заменять переменные,то он такие числа выводит
     
  12. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Code:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    int main()
    {
    char a[]={"0"};
    int count=0;
    for (int i = 0; i < int (strlen(a)); i ++ )
    {
    if (strchr("0123456789",a[i] ) )
    count++;
    printf("%d \n",a[i]);
    return count;
    
    }
    
    Code:
    int main()
    {
    char a[]="123321\0";
    int count=0;
    for (int i = 0; i < int (strlen(a)); i ++ )
    {
    if (strchr("0123456789",a[i] ) )
    count++;
    printf("%d \n",count);
    return count;
    }
    который из этих исходников используете?
     
  13. darankos

    darankos New Member

    Joined:
    18 Jul 2010
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    2ой, как правильно отделить цифры от букв?
    а то как я прописал почему то не работает...
     
  14. darankos

    darankos New Member

    Joined:
    18 Jul 2010
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0

    что получилось, с усилиями гугла :),исходник полностью рабочий...
    помогите найти сумму полученных цифр,т.е каждую цифру ссумирвовать...