解题思路:使用fgets函数替换gets函数,避免缓冲区溢出。使用sscanf函数格式化输入。
注意事项:1.gets函数由于它的不安全已经不在使用,因此使用fgets函数进行替换。
2.在进行多个字符串的输入时,将字符串末的换行符'\n'替换成'\0'。
参考代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_INPUT_SIZE 100
int is_valid_ip(int a, int b, int c, int d) {
return (a >= 0 && a <= 255) && (b >= 0 && b <= 255) && (c >= 0 && c <= 255) && (d >= 0 && d <= 255);
}
int main() {
int a, b, c, d;
char buffer[MAX_INPUT_SIZE];
// 循环读取每一行输入
while (fgets(buffer, sizeof(buffer), stdin)) {
// 去掉输入末尾的换行符
buffer[strcspn(buffer, "\n")] = '\0';
// 检查是否为结束标志 "End of file"
if (strcmp(buffer, "End of file") == 0) {
return 0;
}
// 解析 IP 地址部分
if (sscanf(buffer, "%d.%d.%d.%d", &a, &b, &c, &d) == 4) {
// 验证 IP 地址并输出结果
if (is_valid_ip(a, b, c, d)) {
printf("Y\n");
} else {
printf("N\n");
}
} else {
// 如果解析失败
printf("N\n");
}
}
return 0;
}
0.0分
0 人评分
母牛的故事 (C语言代码)浏览:739 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:866 |
A+B for Input-Output Practice (VI) (C语言代码)浏览:575 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:654 |
简单的a+b (C语言代码)浏览:444 |
管理学院的人数 (Java代码)浏览:560 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:4394 |
孤独的骑士 (C语言代码)浏览:1105 |
用筛法求之N内的素数。 (C语言代码)浏览:604 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:2173 |