2014-02-09 3 views
-1

Здесь л изменил код и моя главная проблема заключается в том, чтобы найти знак, когда 3 номера набираются ...Counting метки с помощью строки

л следует ввести школьный предмет и 3 балла, и он должен рассчитать свой окончательный знак (для пример математике 3 3 4 программа должна написать окончательную метку в математике 3 (при расчете 3,33, так что отметка 3)). он помещается в строку s1 [30]. Моя идея состояла в том, чтобы отсоединить строку к частям на основе пустого пространства, но когда я тестирую программу, она печатает NULL вместо темы ... любая идея, где ошибка?

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

void kopiranje(char *s,char *s2,char *s3) 
{ 

    int i; 
    char *ocena; 
    for(i=0;i<strlen(s);i++) 
    { 
     *(s2+i)=*(s+i); 
     if (*(s2+i)== ' ') *(s2+i)='\0'; 
    } 

} 


int main() 
{ 
    char s[30],s2[30],s3[30]; 
    char *ocena; 
    printf("\nUnesi predmet i ocene:\n"); 
    printf("======================================\n"); 
    gets(s); 
    kopiranje(s,s2,s3); 

    printf("======================================"); 
    printf("\nZakljucna ocena iz predmeta %s je %s",s2); 

} 

ответ

1

Лучше использовать функцию strtok, чтобы разбить строку на лексемы. И вместо того, чтобы gets гораздо лучше использовать fgets

Что касается цикла

for(int i=0;i<strlen(s1);i++) 
{ 
    if((s1[i]==' ')&&(s1[i]=!"\0")) predmet=s1[i];  
} 

, то он не должен быть собран, потому что есть опечатка, должно быть ! = вместо =! и не имеет никакого смысла. Вы храните «в предмете».

Кстати, функция main в C определяется как int main(void), если у нее нет параметров.

+0

LoL Я только что понял, что я набрал: D lm epic fool thx за помощь: D – user3127589

Смежные вопросы