コンパイラのバージョン
g++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
ロベールのC++教室のweb版第54章を読んでいた。(最終更新日が2000.6.24)
getsを使用したとき下記のエラーが出た
error: ‘gets’ was not declared in this scope
コードは下記
File3.cpp
# include <stdio.h>
# include <string.h>
int main()
{
FILE* pFile;
char buffer[512];
int i;
printf("何か文字列を入力して下さい > ");
gets(buffer);
pFile = fopen("fprintf.txt", "w");
fprintf(pFile, "%d\n", strlen(buffer));
for(i = 0; buffer[i]; i++)
fprintf(pFile, "%02X ", (unsigned char)buffer[i]);
fclose(pFile);
return 0;
}
gets
ではなくfgets
を使う。gets
は使用してはいけないらしい。
File3.cpp
# include<stdio.h>
# include<string.h>
int main(){
FILE* pFile;
char buffer[512];
int i;
printf("何か文字列を入力して下さい > ");
fgets(buffer,256, stdin);
//gets(buffer);
pFile=fopen("fprintf.txt", "w");
fprintf(pFile, "%d\n", strlen(buffer));
for(i=0; buffer[i]; i++)
fprintf(pFile, "%02X", (unsigned char)buffer[i]);
fclose(pFile);
return 0;
}