2011-09-23 5 views
0

오늘 가장 긴 공통 하위 시퀀스를 찾는 프로그램을 코딩 중이었고 각 시퀀스의 요소를 문자 배열로 가져 왔습니다. 그러나 나는 약간의 문제에 부딪쳤다. for 루프를 사용하여 요소를 가져 왔지만 루프가 실행해야하는 반복 횟수를 얼마나 높게 설정했는지는 중요하지 않습니다. 반복 실행 후에는 항상 종료되었습니다. 데이터가 입력되는 배열은 크기가 10 인 배열이므로 배열 크기에는 문제가 없습니다. 작은 테스트 프로그램을 코딩하고 심지어 테스트 프로그램에서도 문자 배열에 대한 데이터를 가져 오는 for 루프는 항상 5 번의 반복 후에 종료됩니다. 누군가 이유를 말해 줄래? 위의 코드는 여기에 너무 5 반복 한 후 종료 테스트 program.for 루프가 있었다문자 배열에 대한 입력이 의심 스럽습니다.

#include<stdio.h> 
void main() 
{ 
    int i; 
    char s[10]; 
    for(i=0;i<10;i++) 
    scanf("%c",&a[i]); 
} 

(난 내 실험실에서 터보 C++를 사용하도록 강제하고있다)!

+5

* 한숨 * 적어도 코드를 게시하기 전에 컴파일하십시오. 또한 루프가 5 번의 반복 작업을 마친 후에도 루프가 종료되지 않는다면 추적 메시지를 넣어야합니다./ –

+0

그래, 컴파일 했어. 그리고 전 scanf 진술 후 i를 표시하려했습니다. 그러나 그것은 단지 두 번 계속 증가했다. –

답변

2

개행 문자 ('\n')도 문자입니다. 당신이 H, <return>, e, <return>, l, <return>, l, <return>, o, <return>를 입력 할 경우, 당신은 10 개 문자를 입력했습니다.

1

그것은 한 번에 단 하나의 문자열로 전체 "배열"을 읽을 수있는 훨씬 더 좋은 아이디어이다 :

char s[10]; 
fgets(s, sizeof s, stdin); 
1

날 어디 보자, 각 문자 후 return을 눌러거야? scanf() 호출해도 그 코드를 읽을 수 있습니다 ...