2016-04-03 77 views
1

strtok kullanarak her virgül sonra birlikte chars eklemek çalışıyorum ama nereden başlayacağımı bilmiyorum? inputString'in gerçek değerini saklayan değişken nerede? tok + = tok; gerçekten mantıklı değil ama hepsi atm düşünebildiğim. Ayrıca dizeleri int'ye dönüştüren ayrı bir işleve sahibim, bunu da buraya eklermiyim? Fonksiyonun char strint (void) olarak adlandırıldığını varsayarsak;strtok kullanarak numaralar nasıl eklenir?

char addtotal (void) 
{ 
    char inputString[LINE_LEN + EXTRA_SPACES]; 
    char *tok; 
    char com[2] = ","; 

    printf("Enter numbers to be tokenized using commas: \n"); 

    if (fgets(inputString, LINE_LEN + EXTRA_SPACES, stdin) == NULL) 
    { 
     printf("ERROR!\n\n"); 
     return EXIT_FAILURE; 
    } 

    if (inputString[strlen(inputString) - 1] != '\n') 
    { 
     printf("BUFFER OVERFLOW!\n\n"); 
     return EXIT_FAILURE; 
    } 

    inputString[strlen(inputString) - 1] = 0; 

    tok = strtok(inputString, com); 

    while(tok!=NULL) 
    { 

     printf("%s \n", tok); 

     tok = strtok(NULL, com); 

    } 


} 

cevap

0

Buraya ulaşmak istediğiniz şeyi tam olarak emin değilim, ama virgülle ayrılmış tamsayılar arasında bazı aritmetik işlemleri yapmaya çalışıyoruz varsayalım.

int addtotal(void) 
{ 
    int result; 
    ... 
    tok = strtok(inputString, com); 

    for (result = 0; tok != NULL;) 
    { 
     result += atoi(tok); 
     tok = strtok(NULL, com); 
    } 

    return result; 
} 

Bunu böyle yapabilirsiniz. Ben test etmedim ama işe yaramalı.

+0

yep! aradığım şey bu. Hala strtok'un nasıl çalıştığından% 100 emin olmadığım için tekrar gözden geçirmem gerekecek. – ProgrammingNoob