day 2 - 데이터 구조 실험의 창고 와 대기 열 9: 줄 편집기
2398 단어 데이터 구조데이터 구조 -- 창고
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic Discuss
Problem Description
간단 한 줄 편집 프로그램의 기능 은 사용자 가 터미널 에서 입력 한 프로그램 이나 데 이 터 를 받 아들 이 고 사용자 의 데이터 영역 에 저장 하 는 것 입 니 다.
사용자 가 터미널 에 입력 할 때 오류 가 발생 하지 않 을 것 이 라 고 보장 할 수 없 기 때문에 편집 프로그램 에서 '한 문 자 를 받 아들 일 때마다 사용자 데이터 영역 에 저장 합 니 다' 는 방법 이 가장 적절 하지 않 습 니 다.사용자 가 입력 한 줄 의 문 자 를 받 아들 이 고 한 줄 씩 사용자 데이터 영역 에 저장 하 는 것 이 좋 습 니 다.사용자 가 오 류 를 입력 할 수 있 도록 하고 오류 가 발견 되 었 을 때 바로 수정 할 수 있 습 니 다.예 를 들 어 사용자 가 방금 입력 한 문자 가 잘못 되 었 다 는 것 을 발 견 했 을 때, 이전 문자 가 잘못 되 었 음 을 나타 내 는 백 스페이스 문자 '\ #' 를 추가 할 수 있 습 니 다.
현재 입력 한 줄 에 오류 가 많 거나 고치 기 어 려 운 것 을 발견 하면 현재 줄 에 있 는 문자 가 모두 잘못 되 었 음 을 표시 하기 위해 서 취소 문자 '@' 을 입력 할 수 있 습 니 다.
줄 의 맨 위 에 '\ #' 기 호 를 계속 입력 하면 유효 하지 않 습 니 다.
Input
다 중 줄 문자 시퀀스 를 입력 하 십시오. 줄 문자 총수 (퇴 격 문자 와 퇴 행 문자 포함) 는 250 보다 크 지 않 습 니 다.
Output
상술 한 설명 에 따라 얻 은 출력.
Sample Input
whli##ilr#e(s#*s)
outcha@putchar(*s=#++);
Sample Output
while(*s)
putchar(*s++);
Hint
#include #include #include
char str1[10001], str2[10001];
int main(void) { int i, j, flag, n, jin;
while(gets(str1) != NULL) { n = strlen(str1); str 2 를 창고 에 넣 는 데 사용 되 는 flag = 0; memset(str2, 0, sizeof(str2));
for(i = 0; i < n; i++) { if(str1[i] == '#') { if(i == 0) { for(j = 0; j < n - 1; j++) { str1[j] = str1[j + 1]; }
i = -1; //나 온 후에 먼저 1 을 추가 합 니 다. 왜냐하면 시작 에 여러 개의 \ # 문자 가 잇 따 를 수 있 기 때 문 입 니 다. n--; continue; }
else { jin -= 1; //str 2 의 \ # 앞 문 자 를 제거 합 니 다. } }
else if(str1[i] == '@') { memset(str2, 0, sizeof(str2)); jin = 0; }
else { str2[jin++] = str1[i]; } }
if(!flag) { printf("%s", str2); } }
return 0; }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.