words.txt에 "banana test apple"이 포함 된 파일의 단어를 바꿀 때 찾고 있습니다 -> "banana Replaced! apple"대체 할 단어를 stdin (이 경우 "test")에 대한 인수C - 교체를위한 더 나은 방법
내 코드가 잘못 될지 잘 모르겠지만 getchar() 함수를 얻는 것보다 더 나은 방법이 있는지 궁금합니다. 당신이 문자를 백업 할 수 없기 때문에 혼란스럽고 성가시다.
제안 사항? 감사합니다
$ ./a.exe test < words.txt
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv) {
int c = getchar();
int counter = 0;
int i,index;
for (i = 1; i < argc; i++){
for (index = 0; index < strlen(argv[i]); index++){
while (c == argv[i][index]){
counter++;
c = getchar();
index++;
if (counter == strlen(argv[i])){
printf("Replaced!");
}
}
printf("%c ",c);
c = getchar();
counter = 0;
}
}
return (0);
}
명백한 제안는 fgets'과 전체 라인을()'를 읽고 다음 (아마도 않는 strstr()''과)들을 검색 할 단어를 찾기 위해 교체 한 다음 단어 앞에 자료를 인쇄하는 것입니다 행에서 일치하는 단어 다음부터 검색을 다시 시작하기 전에 대체 텍스트 (''testing, 1, 2, 3, tested! '를 포함하는 행은''로 끝남'', 1, 2, 3, Exposed –
코드가 구현한다고 생각하는 알고리즘을 설명하거나 적어도 코멘트를 추가 할 수 있습니까? –
프로그램에 대한 모든 입력과 질문 할 때 생성되는 출력을 제공하십시오. 실행중인 명령 줄을 보여 주지만 입력 및 출력을 보여줍니다.이 명령 줄과 코드를 사용하면 words.txt의 내용을 stdin *으로 파이프합니다 (그래서 getchar() 호출을위한 데이터 소스) * 그리고 나서 argv [1] "test"의 문자를 반복하여 t-e-s-t를 얻는다. 그것은 당신의 묘사와 결코 일치하지 않습니다. @DavidSwwartz가 말했듯이, 적어도 당신의 오해에 대해 의견을 말하면서 우리는 그것들을 처리 할 수있는 기회를 갖습니다. – HostileFork