case1)
gcc -c send.c
gcc -o send send.o -lws2_32

case2)
gcc -o send send.o -lwsock32

/*
C:\Users\Downloads>gcc -c a12.c
a12.c: In function 'main':
a12.c:8:2: warning: implicit declaration of function 'scanf_s' [-Wimplicit-function-declaration] scanf_s("%s", NN, sizeof(NN));

*/

해당 오류는 VSCode에서 scanf_s 함수를 사용했을 때 발생한다.
scanf_s는 기존 scanf 함수에 비해 보안이 강화된 함수로 Visual Studio에만 내장되어 있는 함수이다.
따라서 사용하기 위해선 해당 헤더를 따로 추가해주어야 한다.

/*
소스
*/
#include <stdio.h>

int main(int argc, char *argv[])
{
    char NN[5];

    printf(">>");
    scanf_s("%s", NN, sizeof(NN));
    printf(">>[%s]\n",NN);

    return 0;
}

 

[C언어] 변수 단위 파일 읽기 함수 - fscanf


※요약
fscanf : 개방된 파일에서 변수 단위로 입력을 받는다.

※특징
변수 간의 구분은 공백, 탭, 개행 문자로 한다.
*는 값을 읽지 않고 건너뛸 때 사용한다.
파일 포인터는 자동으로 증가한다.

※함수 원형 및 설명
int fscanf( FILE *stream, const char *format [, argument].. );
----- stream : 개방된 FILE 구조체의 포인터
----- format : 형식 제어 문자열
----- argument : 가변적인 매개변수
----- 반환값 : 읽혀진 필드의 수. 파일 끝 또는 에러 시 EOF(-1)

#include <stdio.h>

int main( )
{
FILE *pFile = NULL;

pFile = fopen( "d:\\Text.txt", "r" );
if( pFile == NULL )
{
//에러 처리
}
else
{
int nCount;
float fRatio;
char strDesc[255];

while( !feof( pFile ) )
{
//공백으로 분리된 파일 읽기
fscanf( pFile, "%d %f %s", &nCount, &fRatio, strDesc );
printf( "공백으로 분리 : %d %f %s\n", nCount, fRatio, strDesc );

//,로 분리된 파일 읽기
fscanf( pFile, "%d, %f, %s", &nCount, &fRatio, strDesc );
printf( ",로 분리 : %d, %f, %s\n", nCount, fRatio, strDesc );

//탭으로 분리된 파일 읽기
fscanf( pFile, "%d\t%f\t%s", &nCount, &fRatio, strDesc );
printf( "탭으로 분리 : %d\t%f\t%s\n", nCount, fRatio, strDesc );

//선별적으로 읽기 - [%*]을 사용하면 값을 읽지 않는다.
fscanf( pFile, "%*d %*f %s\n", strDesc );
printf( "선별적으로 읽기 : %s\n", strDesc );
}

fclose( pFile );
}

return 0;
}

#비고)Makefile

CC=gcc
SRC=./
EXE=./
INC=./
CFLAGS=-DSERCMD - DDEBUG -DLOGGING -I.
LIBS = -lcrypt -lnsl -lm

BIN=$(EXE)
all: $(BIN)/sample \

.c.o:
    $(CC) $(CFLAGS) -c -g $*.c

#sample.c R_Option.c R_Future.c 가 모두 존재할경우에 Object는 아래와 같이 명시를 해줘야 한다.
$(BIN)/sample: sample.o R_Option.o R_Future.o
    $(CC) -o $@ sample.o  R_Option.o R_Future.o (LIBS) -s

clean:
    rm *.o

#include<limits.h> 선언후에 사용되는 정의값

stdio.h 와 마찬가지로 limits.h 도 헤더파일입니다.
다만 틀린 것이 있다면 limits.h 는 매크로 상수처럼 그 값과 변수명이 이미 정해져 있다는 것이죠. 
따라서 유효범위를 알아야 하기위해서는 변수명또한 알아두셔야합니다.

limits.h 헤더파일 내용.

#include<limits.h> 선언후에 사용되는 정의값

CHAR_BIT char의 비트 수
SCHAR_MIN signed char의 최소값
SCHAR_MAX signed char의 최대값
UCHAR_MAX unsigned char의 최대값
CHAR_MIN char의 최소값
CHAR_MAX char의 최대값
MB_LEN_MAX 멀티바이트 문자의 최대 바이트 수
SHRT_MIN short int의 최소값
SHRT_MAX short int의 최대값
USHRT_MAX unsigned short int의 최대값
INT_MIN int의 최소값
INT_MAX int의 최대값
UINT_MAX unsigned int의 최대값
LONG_MIN long int의 최소값
LONG_MAX long int의 최대값
ULONG_MAX unsigned long int의 최대값

ex)

#include<stdio.h>
#include<limits.h>

int main(void)
{
    short min = SHRT_MIN;
    short max = SHRT_MAX;

    printf("MAX:[%d],MIN[%d]\n", max, min);
    return(0);
}



#include <stdio.h>
#include <unistd.h>

int main() 
{
  int i;

  for (i=10;i>=0;i--)
  {
    printf ("Count Down : %02d\r", i);
    fflush(stdout);
    sleep(1);
  }

  return(0);
}


#C (프로그래밍 언어) 개요

C는 1972년 켄 톰슨과 데니스 리치가 벨 연구소에서 일할 당시 새로 개발된 유닉스 운영 체제에서 사용하기 위해 
개발한 프로그래밍 언어이다. 
켄 톰슨은 BCPL언어를 필요에 맞추어 개조해서 "B"언어(언어를 개발한 벨 연구소의 B를 따서)라 명명했고, 
데니스 리치가 이것을 개선하여 C 언어가 탄생했다. 
유닉스 시스템의 바탕 프로그램은 모두 C로 작성되었고, 
수많은 운영 체제의 커널 또한 C로 만들어졌다. 
오늘날 많이 쓰이는 C++는 C에서 객체 지향형 언어로 발전된 것이다. 
또 다른 다양한 최신 언어들도 그 뿌리를 C에 두고 있다.

#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    char *str = "ffffffaaaabcccddeeeeeffffgghijklmmmmnnnnopppqrstuuuuuvwxxxxxyyyyz";

int index[strlen(str)][2];

int kk, ff;

memset(index,0x00,sizeof(index));

    for(kk=0; kk<strlen(str); kk++)
{
index[kk][0] = *(str+kk);
}

    for(ff=0; ff<strlen(str); ff++)
{
    for(kk=0; kk<strlen(str); kk++)
    {
        if(index[ff][0] == index[kk][0]) index[ff][1]++;
}
}

for(kk=0; kk<strlen(str); kk++)
{
if(index[kk][1] ==1)
printf("[%c]>>>>[%d]\n", index[kk][0], index[kk][1]);
}


return(0);
}


/*
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\Users\SIHOO\Downloads\example>__11
[b]>>>>[1]
[h]>>>>[1]
[i]>>>>[1]
[j]>>>>[1]
[k]>>>>[1]
[l]>>>>[1]
[o]>>>>[1]
[q]>>>>[1]
[r]>>>>[1]
[s]>>>>[1]
[t]>>>>[1]
[v]>>>>[1]
[w]>>>>[1]
[z]>>>>[1]
*/

+ Recent posts