C言語で文字列や数値を入力する方法は、scanf以外にもいくつかあります。
本記事では、scanf以外の方法を使って、安全かつ柔軟な入力処理を行う方法を紹介します。
目次から探す
scanfを使わない文字列の入力方法
文字列の入力には、以下の3つの方法があります。
gets関数を使った文字列の入力
#include <stdio.h>
int main() {
char str[100];
printf("文字列を入力してください: ");
gets(str);
printf("入力された文字列は: %s\n", str);
return 0;
}
gets関数
はセキュリティ上の問題があるため、使用は推奨されません。
fgets関数を使った文字列の入力
#include <stdio.h>
int main() {
char str[100];
printf("文字列を入力してください: ");
fgets(str, sizeof(str), stdin);
printf("入力された文字列は: %s\n", str);
return 0;
}
getchar関数を使った文字列の入力
#include <stdio.h>
int main() {
char str[100];
int i = 0;
char c;
printf("文字列を入力してください: ");
while ((c = getchar()) != '\n') {
str[i] = c;
i++;
}
str[i] = '\0';
printf("入力された文字列は: %s\n", str);
return 0;
}
scanfを使わない数値の入力方法
数値の入力には、以下の3つの方法があります。
getchar関数を使った数値の入力
#include <stdio.h>
int main() {
int num = 0;
int c;
printf("数値を入力してください: ");
while ((c = getchar()) != '\n') {
num = num * 10 + (c - '0');
}
printf("入力された数値は: %d\n", num);
return 0;
}
fgets関数とatoi関数を使った数値の入力
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[100];
int num;
printf("数値を入力してください: ");
fgets(str, sizeof(str), stdin);
num = atoi(str);
printf("入力された数値は: %d\n", num);
return 0;
}
sscanf関数を使った数値の入力
#include <stdio.h>
int main() {
char str[100];
int num;
printf("数値を入力してください: ");
fgets(str, sizeof(str), stdin);
sscanf(str, "%d", &num);
printf("入力された数値は: %d\n", num);
return 0;
}
本記事では、gets関数
、fgets関数
、getchar関数
を使った文字列の入力方法、getchar関数
、fgets関数
とatoi関数
、sscanf関数
を使った数値の入力方法を紹介しました。
これらの方法を使うことで、より安全かつ柔軟な入力処理を実現することができます。