2013-12-11 6 views
0

C에서 내 작은 프로그램에 문제가 있습니다. 파일을 읽고 두 번째 줄에있는 문자열을 확인하고 테이블에 라인,하지만 일부 조건txt 파일의 내용을 읽고 C 조건을 따르십시오

이 내 txt 파일이 같이 무엇을 따라야합니다 :

NOMLOT : 27 : 47 : 68 :

0001 : 16 : 500 79 :: 3 ::::: 43 : 53 :: 71 : 81 :: 17 : 28 :: 31 :: 59 ::: 85

,210

나는 내 코드가이 http://i44.tinypic.com/35avekw.jpg

같은 배열을 표시하려는하지만 난 그것을하지 않는 좋은 방법은 당신이 어떤 방법을 제안 또는 나를 도울 수 있다면

int main() 
{ 
int x,i; 
char buf[TAILLE]; 
char tab[60]; 
FILE* fichier = NULL; 
fichier = fopen("LSBBZ.txt", "r"); 
if (fichier != NULL) 
{ 
printf("%s\n", get_line(buf, TAILLE, fichier, 2)); 
for (i=0 ; i<60 ;i++) 
{ 
    if(buf[i] == ':') 
    { 
     i =i+1; 
     if (buf[i] ==':') 
     { 
      tab[i] = 219 ; 
     } 
     else 
      tab[i] = buf[i]; 
    } 
    else 
     tab[i] = buf[i]; 
} 
} 
printf("\n"); 
} 

char *get_line(char *buf, int n, FILE *f, int line) 
{ 
int i; 
for (i=0 ;i<line;i++) 
{ 
    if(fgets(buf,n,f) == NULL) 
     return NULL; 
    buf[strlen(buf) - 1 ] = '\0'; 
} 
return buf; 
} 

알고! 감사

사용
+0

당신이 피드백 코드 하시겠습니까? 그렇다면 [codereview] (http://codereview.stackexchange.com/)가 귀하의 질문에 더 적합한 사이트 일 수 있습니다. – simonc

+0

아니요 다른 방법이나 다른 생각이 필요합니다 – Faxsy

+0

지금하고있는 일에 무엇이 잘못 되었나요? – nhgrif

답변

0

예를 strsep

#include <stdio.h> 
#include <stdlib.h> 

#if 1 
#include <string.h> 

//Not required if already exists. 
char * strsep(char **sp, const char *sep) 
{ 
    char *p, *s; 
    if (sp == NULL || *sp == NULL || **sp == '\0') return(NULL); 
    s = *sp; 
    p = s + strcspn(s, sep); 
    if (*p != '\0') *p++ = '\0'; 
    *sp = p; 
    return(s); 
} 
#endif 

#define Nothing 219 

int main(){ 
    int data[3][9] = {0}; 
    char input[] = "0001::16:27::47::68:79::3::::43:53::71:81::17:28:31::59:::85"; 
    char *token, *sp = input; 
    int *ip = &data[0][0]; 
    token=strsep(&sp, ":");////first drop 
    while(NULL != (token=strsep(&sp, ":"))){ 
     *ip++ = (*token != '\0') ? atoi(token) : Nothing ;//Nothing is 219 
    } 
    int r, c; 
    for(r=0;r<3;++r){ 
     printf("|"); 
     for(c=0;c<9;++c){ 
      int value = data[r][c]; 
      if(value != Nothing) 
       printf("%2d", data[r][c]); 
      else 
       printf("%2s", ""); 
      printf("|"); 
     } 
     printf("\n"); 
    } 
    return 0; 
} 

/* result 
| |16|27| |47| |68|79| | 
| 3| | | |43|53| |71|81| 
| |17|28|31| |59| | |85| 
*/ 
+0

감사합니다, 내 probleme 해결할 것, 나는 당신의 methode 함께 시도 할 것입니다 잘 btw @ BLUEPIXY – Faxsy

관련 문제