파일을 한 줄씩 읽어서 배열에 저장하는 방법을 사용해보려고 합니다.
초고리
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 인자 두개 아닐까요?
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2693591 | 컴파일 에러에서 질문드립니다 (3) | 게자리 | 2025-05-03 |
2693463 | 동적할당 이용시 fwrite사용을 어떻게 해야하나요..? (10) | 일본어못해요 | 2025-05-02 |
2693387 | 배열문제입니다 수정오류캡쳐했습니다 (6) | 연하얀 | 2025-05-01 |
2693356 | text 입출력 내림차순 질문입니다 ㅠ | 빛글 | 2025-05-01 |
2693328 | C언어를이용해서 .txt파일 외에 다른 확장자 파일 삭제가 가능한지.. (2) | 대나무 | 2025-05-01 |
2693299 | 파일입출력 바이너리파일 | 독특한 | 2025-04-30 |
2693273 | 오류 (1) | 귀1여운렩 | 2025-04-30 |
2693080 | visual studio 2008 express edition 등록키 말인데요 | 얀별 | 2025-04-28 |
2693053 | 배열, 구조체 관련 프로그래밍 질문드립니다. | 싸리 | 2025-04-28 |
2693025 | 프로그램을 짜봤는데요 ㅠㅠ | 상처입은마음 | 2025-04-28 |
2693001 | 워닝문제, 세그멘트결함문제 (1) | 월식 | 2025-04-28 |
2692979 | 라인한줄 이랑.. 소스 설명좀 부탁드려요.. | 이루리 | 2025-04-27 |
2692947 | 이 문제좀 풀어 주세요..ㅜㅜ (1) | 소리 | 2025-04-27 |
2692889 | 함수의 구조체 인자로 받아서 그 인자로 데이터 넣기... | 한뎃집 | 2025-04-27 |
2692862 | 성적 출력 하는 프로그램인데요~!!!도움좀 주세욤.ㅠ | 두빛나래 | 2025-04-26 |
2692831 | if 문 간단해요 빨리좀 ㅠㅠ | 이플 | 2025-04-26 |
2692805 | 실행파일이 이상해요 | 푸헷 | 2025-04-26 |
2692750 | 퀵정렬 질문이요 . | 동생몬 | 2025-04-25 |
2692700 | 이 소스코드에 문제 있나요?? (2) | 초코초코해 | 2025-04-25 |
2692596 | 오류좀 잡아주세요 | 하나 | 2025-04-24 |