目录
代码
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入一个字符串:");
fgets(str, sizeof(str), stdin);//这个很重要,这篇博客主要为了讲它,请看下面解析
for (int i = 0; i < strlen(str); i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
str[i] = str[i] - 32; // 小写字母转换为大写字母
}
}
printf("转换后的字符串为:%s", str);
return 0;
}
在这个程序中,我们使用了一个for循环遍历输入的字符串,对于每个小写字母,通过ASCII码将其转换为对应的大写字母。最后输出转换后的字符串。
大小写字母的转换的代码
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
printf("Input a string:");
scanf("%s",str);
for(int i=0;i<strlen(str);i++)
{
if(str[i]>='a' && str[i]<='z')
{
str[i]=str[i]-32;//小写转换成大写
}
else if(str[i]>='A' && str[i]<='Z')
{
str[i]=str[i]+32;//大写转换成小写
}
}
printf("%s\n",str);
return 0;
}
fgets函数的用法
fgets是C语言中用来读取字符串的函数;
1.其原型为:
char *fgets(char *str, int size, FILE *stream);
2.
其中,str是一个字符数组,用来存储读取到的字符串;size是str的大小,表示最多读取的字符数(包括空字符'\0');stream是输入流,通常使用stdin表示从标准输入读取。
因此,fgets(str, sizeof(str), stdin)这一行代码的作用是,从标准输入中读取一个字符串,并将其存储到str字符数组中。sizeof(str)的作用是获取str数组的大小,保证读取的字符数不超过数组的容量,避免造成内存溢出等错误。
需要注意的是,fgets函数会将输入流中的换行符'\n'读取到字符串中,如果不需要可以手动去除。
使用fgets函数时,需要注意以下几点:
- fgets函数会将输入中的换行符(\n)也一同读取进来,因此字符串长度可能会比预期的要长。
- 为了避免字符串长度超出缓冲区大小,可以将缓冲区的大小作为第二个参数传递给sizeof函数,确保读取的字符串不会溢出。
- 需要注意fgets函数读取的字符串末尾会有一个空字符(\0),因此在判断字符串相等或进行其他处理时,需要考虑到这个空字符。
fgets和scanf的区别
fgets函数是C标准库提供的一个比较安全和通用的读取字符串的函数。它可以从文件流(例如stdin)中读取一行字符串,包括换行符,并将其存储到指定的缓冲区中。相比于scanf函数,fgets函数更适合读取包含空格和特殊字符的字符串,也更容易避免缓冲区溢出的问题。另外,fgets函数还可以指定最大读取的字符数,以避免读取过多的数据。
scanf函数是一个格式化的输入函数,可以从标准输入或其他文件流中按照指定的格式读取数据。它可以根据格式字符串中的占位符来解析输入数据,并将解析结果存储到指定的变量中。相比于fgets函数,scanf函数更适合按照特定的格式读取数据,例如整数、浮点数等,但对于读取字符串来说,使用fgets函数更安全可靠。
总结起来,fgets函数主要用于读取字符串,包括特殊字符和空格,而且能够避免缓冲区溢出的问题。而scanf函数则更适合按照特定的格式读取数据,包括整数、浮点数等。
举例1
假设我们要编写一个C程序,输入两个整数,然后输出它们的和。我们可以使用fgets函数来读取用户输入的字符串,并将其转换为整数类型后进行计算,代码如下
#include <stdio.h>
#include <stdlib.h>
int main() {
char str1[100], str2[100];
int num1, num2;
printf("请输入两个整数:\n");
fgets(str1, sizeof(str1), stdin);
fgets(str2, sizeof(str2), stdin);
num1 = atoi(str1); // 将字符串转换为整数
num2 = atoi(str2);
int sum = num1 + num2;
printf("它们的和为:%d\n", sum);
return 0;
}
举例2
以下是一个使用fgets函数读取用户输入的国家名称,并输出其对应的简称的C程序示例
#include <stdio.h>
#include <string.h>
int main() {
char country[100];
printf("请输入一个国家名称:");
fgets(country, sizeof(country), stdin);
if (strcmp(country, "中国\n") == 0) {
printf("它的简称是CN。\n");
} else if (strcmp(country, "美国\n") == 0) {
printf("它的简称是US。\n");
} else if (strcmp(country, "日本\n") == 0) {
printf("它的简称是JP。\n");
} else {
printf("无法识别该国家的名称。\n");
}
return 0;
}
希望这些示例能够帮助您理解如何使用fgets函数读取用户输入的字符串并进行处理。