파일을 한 줄씩 읽어서 배열에 저장하는 방법을 사용해보려고 합니다.
초고리
C코드 질문입니다. 절대 리눅스 질문이 아닙니다.
리눅스를 공부하면서, 윈도우에 있는 윈도우 탐색기를 보고.. 리눅스에도 한 번 비슷한 것을 만들어보자..해서 시작하게 되었습니다.
그런데 여기서 C코딩이 막히네요..
파일의 주소들을 어떤 txt파일에저장을 했습니다. 여기서는 log.txt라고 할게요.
log.txt에는 아래와 같은 자료가 있습니다.
/home/user
/home/user/temp
/home/user/Videos
...
각 라인의 크기는 중구난방이죠.
그런데 log.txt를 한 줄씩 읽어 들여와서 그 값을 배열 변수에 저장한 뒤에
그 배열을 갖고 파일간 이동을 한 번 해보려고합니다.
우선 제가 작성한 코드를 적을게요.
#include stdio.h
#include stdlib.h
#include string.h
#include fcntl.h
#include unistd.h
void main(){
FILE *fp;
int idx, input=0;
int fd;
char buf[50][50]; // 사실 이 부분이 조금 걸립니다. 2차원 배열의 크기를 동적으로 할당하는 법을 잘 모르겠어요.
if((fp = fopen(/home/user/temp/log.txt, r)) == NULL){
perror(log.txt);
exit(1);
} // 파일을 열고, 파일 오류나면 오류 실행하는 부분.
for(idx = 1; ; idx++){
fgets(buf[idx-1], 50, fp);
printf(%d : %s \n, idx, buf[idx-1]);
if(feof(fp)) { break; }
} // idx값이 변화 할 때마다 한 줄씩을 배열에 저장해서 출력하기.
printf(출력이 제대로 되는지 테스트 : );
scanf(%d, &input); // 임의의 변수를 입력해서 배열에 제대로 저장되었는지 출력하기 위한 input
printf(%s, buf[input-1]);
}
이렇게 우선 코딩은 했는데.. 느낌은 배열변수와 fgets()함수 두 곳에서 틀렸을 것이라고 생각합니다.
뭔가 대체할 수 있는 방법을 찾아보고 있는데 없네요.ㅎ
문제가 되는 부분이 출력을 하게 되면, 1: /home/user(첫줄)까지는 잘 되는데
그 다음부터는 2: 깨진 글자
3: 깨진 글자
이런 식으로 출력이 됩니다.
-
목소리
쉘에서 기본 업뎃이랑 씨 불러오고 씨가 내부구현 하는 식으로 밀들었어요ㅋㅋ
-
이뻐
리눅스라면 스크립트도 좋지요 ㅎㅎ
-
눈꽃
꺄호! 답변 주신 분들 감사합니다.ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
해결했어요!!! 야호!!! 기쁘당 ㅎㅎㅎ 그런데.. 하나 해결하니까 되던 cd가 안되네요..옌장..ㅋㅋㅋㅋㅋㅋㅋㅋㅋ -
설희
감사합니다. 위에서 몇 가지 알려주셨던 것이 결국 리눅스에서 어느 디렉토리든 간에 이동할 수 있는 cd명령어를 만들 수 있게 되었습니다. ㅋㅋㅋㅋㅋㅋㅋ 복 받으실거예요!!!!!!!!!!!!!!ㅋㅋㅋㅋㅋ
-
알프레드
음.. 절 너무 높게 평가해주시는군요.. 코딩 잘 못하는데..ㅎㅎ 메모리할당이라.. 감사합니다. 찾아보겠습니다! 감사합니다(__)
-
아란
모든 개발이 그런 작은부분에서 시작합니다. 귀차니즘을 줄이는 방법을 제공하는게 프로그래머의 숙명이죠...
구현하신걸로봐선 사소한곳에서의 실수로 보여지는데 한두마디 해드리면 알아들으실것같아 두리뭉실하게 설명드렸습니다.
화이팅하세요~ -
송아리
헐.. 감사합니다.. 칭찬 듣기는 처음이네요.. 그런데 그렇게 거창한 것은 아니예요.
매번 cd명령어로 폴더 50개가 넘는데 왔다갔다 하는게 귀찮아서.. 한 번에 하고자.. ㅎㅎ -
초코초코해
리눅스를 공부하다가 탐색기가 맘에들어 개발한다... 꽤나 좋은 취지의 소규모프로젝트네요.
리눅스를 얼마나 공부하셨는진 모르겠지만 리눅스는 프로그래밍을 어느정도 깔고가야 접근하기 쉬운 운영체제입니다.
헌데 소스 구현부의 내용으로봐선 음...
우선은 윗분말씀대로 fopen의 인자가 모자라구요.
2차원배열의 동적할당도 단순히 메모리 할당하고 똑같이 하시면 됩니다. -
태양
엇? 확인해보겠습니다. 감사해여!!!!
- 에공.. 원래 리눅스에서는 제대로 했는데 여기로 코드 옮기면서 빼먹었습니다. ㅎㅎ -
횃눈썹
fopne 인자 두개 아닐까요?
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2676182 | 숫자 순서대로 배열하는법 | 권뉴 | 2024-11-24 |
2676152 | 기본적인거 하나 질문드립니다. | 개미 | 2024-11-24 |
2676124 | 함수선언관련 질문이에요~...털썩..수정완료 (2) | 가지 | 2024-11-24 |
2676092 | C언어 책 (2) | 아서 | 2024-11-24 |
2676065 | 웹사이트 또는 메신저 등에서 원하는 텍스트를 검사하는방법?? (1) | 모든 | 2024-11-23 |
2676033 | 배열 기초연습중 발생하는 에러 ㅠㅜ... | Creative | 2024-11-23 |
2676005 | keybd_event 게임 제어 | 영글 | 2024-11-23 |
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |