프로그래밍 QnA

hurryon의 이미지

scanf의 특징? 값 입력 받기.

scanf로 값을 입력 받은 후에 다로 다음에 fgets로 값을 입력 받으려고 하면
fgets에 엔터가 들어가 버리네요. 결국은 제대로 입력을 받지 못한다는...

그래서 제가 시험 삼아 짜보니...정말 그렇네요. 소스는 다음과 같습니다.

[code:1]
#include <stdio.h>

main()
{
int value;
char name[10];

scanf("%d", &value);
fgets(name, sizeof(name), stdin);

printf("-출력-\n");
printf("%d", value);

radium의 이미지

bit 연산자를 활용하고 싶어요. 각 메뉴별로...

음... 제가 하고싶은 건.
예를 들어 어떤 사이트에서 A, B, C, D라는 메뉴로 서비스를 해주는데, 유저는 네개의 서비스중 맘에 드는 걸 1개 이상 선택해서 결재한 후에 이용할 수 있구요. 그러면 이제 서비스 하는 입장에선 각 메뉴별로 유저의 권한을 체크해야 하쟎아여.
물론 이걸 구현하는 건 어려운건 아니지만, 제 짧은 생각엔 이진수로 각 메뉴별로 값을 주고, 유저의 사용권한에도 이진수로 값을 준 후에 비트연산자를 활용하면 특정 유저가 특정 메뉴를 이용할 수 있는 권한이 있는 지를 좀더 깔끔하고 아름답게 알아낼 수 있지 않을까 싶어서요.

cmania의 이미지

AVL tree에서 회전요...

AVL트리에서 균형계수가 +2 혹은 -2가 되면 이뤄지는 회전에
대해서 이해가 안됩니다..ㅜㅜ
LL회전과 LR회전 이런거요...
물론 소스그대로 포인터 연산은 소스수준에서는 이해가 가지만..
왜 그렇게 해야하는지를 모르겠습니다.
다른분들은 어떻게 이해하셨나요....

버그소년의 이미지

라이브러리처럼 사용가능한 SSH는 없나요?

안녕하세요..

SSH로 접속해서 특정 명령을 내려 결과값을 가지고 와야합니다.

popen()을 사용하면 r/w둘중 하나만 되고.. 파이프를 사용할 수 없는

상황에선 사용이 불가능하더군요.

SSH를 Connect(), Init(), Login (), Send (), Recv (),

뭐 이런식의 라이브러리처럼 사용가능한것이 있는지 궁금합니다.

OpenSSH를 받아서 보고 있는데 stdin/out을 dup2해서 어쩌구저쩌구..

제가 분석해서 바꿀 실력이 안되서요..

그럼 고수님들의 답변 기다리겠습니다.

ojung99의 이미지

윈도우용의 개발된 소스 수정없이 리눅스로 컴파일 가능한가요?

윈도우 VC 로 개발된 소스..

수정없이 리눅스에서 컴파일가능한지?

알고 싶습니다..

지나가는새의 이미지

warning message가 왜 뜨는지..

다음과 같은 코드가 헤더파일에 있습니다.

#define  A   1
#define  B   2
#define  C   4

#define LVL A+B+C

#define DBG(x, fmt, args...) { \
    if(x & LVL) printf(fmt, ##args)\
}

*.c 에서는 다음과 같이 호출합니다.

DBG(A, "AAAAAAA\n");

이것을 컴파일 하면(물론 -Wall 포함) 다음과 같은 경고 메세지가 나옵니다.

warning : suggest parentheses around + or - in operand of &

물론 실행은 잘 되지만 좀 찜찜 합니다.

realian의 이미지

malloc()등으로 설정한 동적메모리공간의 크기를 알수 있나요?

자신이 직접 malloc()을 이용해서 메모리 공간을 할당한다면 모르지만
어떤 메서드나 기타 등등의 결과로 동적 메모리 공간의 주소를 받아오게 될때

결국 자신이 가진 정보는 이 메모리 공간의 시작번지를 가리키는 포인터 변수밖에 없는데
이걸 이용해서 할당된 메모리 공간의 크기를 알 수 있나요?

그냥 포인터 변수에 대고 sizeof() 하니 포인터 변수의 크기인 4가 나오더군요

알 수 없는건가 보다.. 라고 생각했는데
생각해 보니 free()를 통해 해제할때도 크기를 알아야 해제하겠죠?

고승현의 이미지

ASCII파일의 삭제 및 수정에 관해서....

C 프로그램을 하다보면,

설정 파일 등과 같이 ASCII형태의 파일들에 어떤 문자열을 삽입하고, 삭제, 수정등을 해야 하는 경우가 있습니다.
binary 형식의 파일 이라면, 삽입할 때 record형식으로 삽입하고, 수정 이나 삭제 시에도, 해당 레코드에 접근해서 삭제나 접근을 하면됩니다.

하지만 위와 같은 파일의 경우에는 record형식의 접근이 어렵습니다.

이럴 때 파일의 어느 부분을 삭제하고 수정할 때 어떻게 하시는지요?

제 경우에는 삽입할 때는 추가 모드로 연후에 파일의 제일 마지막에 추가 시킵니다.

shean0의 이미지

proc에서..do break가 나오는 현상은 무엇때문이죠??

왜 ..break.에러가 나는지 .....
프로시져에서두 do break.에러가 나오고... 간단한 이것에서두..나오는데..

똑같은 소스를 다른데서 돌리면 되는데....

[code:1]"test.pc" 90 행, 1855 문자
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlca.h>
#include <math.h>
#define TRUE 1
#define FALSE 0

#define NAME_LENGTH 10
#define ARRAY_LENGTH 10
char *username;
char *password;

void sql_error(char *msg) ;
int db_connect();
void db_close();

febace의 이미지

디바이스 어드레스(?) 들에 대한 질문.

혼란이 찾아 왔습니다.
리눅스에서 프로그래밍 할 경우 생성되는 주소들은 가상 주소 이고
그것이 mmu의 도움을 받아서 드디어 피지컬 주소로 변환된다고 이해 하고 있었습니다.

그런데 어느날..디바이스 드라이버 관련 강좌를 보는데
LPT1(프린터)포트의 주소가 0x378이고 그 것에 접근을 할때에는

프로그램상에서 0x378로 직접 접근 하는 것을 볼수있었습니다.
제 머릿 속에는 0x378역시 가상 주소이고 그 것이 mmu를 통해 변환이 되기 때문에 피지칼 어드레스는 다를 것이다라는 결론에 도달하게 되었습니다.

페이지

프로그래밍 QnA 구독하기