메인함수 로 인자를 받는 코드인데요 이상해요.
곰돌이
#includestdio.h
int main(int argv, char** argc)
{
int i,j; //for 변수
int state; // error 체크 변수
char buf[20];
char* temp[10];
FILE * file1;
FILE * file2;
file1 = fopen(argc[1], rt);
if(file1 ==NULL){
printf(file open error1!\n);
return 1;
}
for(i=0 ; feof(file1) !=0 ; i++){
fgets(buf,20,file1);
temp[i]=buf;
}
state = fclose(file1);
if(state!=0){
printf(file1 close error!\n);
return 1;
}
file2 = fopen(argc[2], wt);
if(file2 ==NULL){
printf(file2 open error2!\n);
return 1;
}
for(j=0 ; j = i ; j++)
fputs(temp[j],file2);
state=fclose(file2);
if(state != 0 ){
printf(file2 close error!\n);
return 1;
}
return 0;
}
코드는 이거고요
오류가
debug assertion 이런게 뜨는데 왜그런걸까요..
-
슬기
계속 답글을 달아주셔서 감사하고도 죄송한데요 T_T
그런식으로 고쳐도 에러가 떠요....;; -
영글
char temp[10][10];
이라면
temp[0][0]부터 temp[9][9]까지 모두 100개를 사용할 수 있게 됩니다.
그리고 문자열의 복사는
#include string.h를 추가시키고
strcpy(temp[0], buf);
이런 식으로 합니다. -
토리
음 temp[10][10]이렇게 한다고 가정을 하면요
temp[10]=buf 이게 되야되는게 아닌가요? 이줄이 오류가 나고
이렇게 오류가 안나도 파일 열고 닫든데서 오류가 납니다 ;;;T_T -
슬옹
char temp[10][10]은 문자열의 최대 길이가 9인 문자열을 10개 기억시킬 수 있는 공간입니다.
char *temp[10];은 문자열을 가리킬 수 있는 포인터 10개를 기억시킵니다.
그러니까 서로 다릅니다. -
훌림목
음 수다님 죄송한데요
char 2차원 배열을 만들엇을때
temp[10][10]이라고하면
temp[10]이라는 주소랑
*temp[10]이거랑 똑같이 취급하면 안되는건가요
배열이름이랑 포인터랑 같이 사용하잔아요 -
얀새
char buf[20]은 길이가 19인 문자열 한 개만 기억을 시킬 수 있고,
char *temp[10];은 문자열을 가리키는 포인터를 10개를 기억시킬 수 있습니다.
이 프로그램은 문자열의 배열 즉 char 2차원 배열을 만들어야 됩니다.