2014-02-15 2 views
1

텍스트 파일을 읽고 있는데 텍스트 파일의 줄 수를 알고 있습니다. fgets를 사용하여 줄을 읽은 다음 strtok을 사용하여 덩어리로 분해합니다. 줄의 첫 번째 문자를 읽으려고하고, "P"또는 "A"이면 조치를 취합니다. 내가 문자 배열로 라인을 취급 할 수 있다고 가정합니다. 이 질문이 초특급 일 경우 미안 해요. 나는 내가 뭔가 잘못하고 있다는 경고를 양식에 알릴 수있다. 아래처럼 할 수있는 더 좋은 방법이 있습니까?문자열에서 문자 만들기

char line[1024]; 


while (i < LINE_MAX) 
    { 
     fgets(line, sizeof (line), fp); 

     strtok(line," "); 
     printf("%c",line[0]); 
     if (line[0] == "P") 
      printf("the letter is P\n");   
     if (line[0] == "A") 
      printf("the letter is A"); 
} 

thread.c : 함수에서 '주' thread.c : 96 : 15 : 경고 : 포인터와 정수의 비교 [기본적으로 사용] thread.c : 96 : 15 : 경고 : 비교 문자열 리터럴 결과가 지정되지 않은 동작으로 표시됩니다. [-Waddress] thread.c : 98 : 15 : 경고 : 포인터와 정수의 비교 [기본값은 활성화 됨] thread.c : 98 : 15 : 경고 : 지정되지 않은 문자열 리터럴 결과와 비교 동작 [-Waddress] 컴파일이 성공적으로 완료되었습니다.

+1

문자 리터럴 (예 :''P'')은 이중 따옴표가 아닌 단일 따옴표로 묶어야합니다. –

+0

양자 택일로 (그러나 덜 최적화 된) OP 문자열은 비교 문자열 인 경우 OP는'strncmp (line, "P", 1)'을 사용할 수 있습니다. – Diti

+0

빠른 응답을 보내 주셔서 감사합니다! – user3287789

답변

2

당신은 문자열을 사용 C.

if (line[0] == 'P'){} 

""char 주위에 따옴표가 필요합니다.

+0

분명히하기 위해 문자열 배열의 요소에 액세스 할 때 작은 따옴표를 사용해야합니다. 나는 전체 문자열을 비교한다면 if (line == "P")가 맞을 것이라고 가정한다. – user3287789

+1

'char'는 작은 따옴표를 사용합니다. 문자열을 비교하려면'strcmp' 함수를 사용하십시오. – haccks

+0

정말 감사드립니다! – user3287789

0

나는 그것이 작동해야한다고 생각한다. 그러나 당신이 큰 따옴표 ("")를 제거 할 때만 그들은 문자가 아닌 문자열을 위해 사용된다. line[0] == "P" 대신 line[0] == 'P'을 사용하십시오.