用fgets输入一个四个元素字符串型数组,并输出
时间: 2023-08-04 21:17:09 浏览: 93
可以使用以下代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 5 // 字符串数组最大长度(包括字符串结束符 '\0')
int main() {
char str_arr[4][MAX_LEN]; // 定义一个四个元素的字符串数组
int i;
// 依次读入四个字符串并存储到字符串数组中
for (i = 0; i < 4; i++) {
printf("请输入第%d个字符串:", i+1);
fgets(str_arr[i], MAX_LEN, stdin);
// 去掉读入字符串的换行符(如果有的话)
if (strchr(str_arr[i], '\n') != NULL) {
*(strchr(str_arr[i], '\n')) = '\0';
}
}
// 输出字符串数组中的所有字符串
printf("输入的四个字符串为:\n");
for (i = 0; i < 4; i++) {
printf("%s\n", str_arr[i]);
}
return 0;
}
```
运行程序后,输入四个字符串,程序会将它们存储到字符串数组中并输出。注意,由于字符串数组中每个字符串都需要占用一个字符存储字符串结束符 '\0',因此 MAX_LEN 应大于等于 5。
相关问题
用c语言编写1、判断字符串是否为回文?若是,则输出YES,否则输出NO。回文是指顺读和倒读都一样的字符串。 2、将s数组中下标为偶数同时ASCII值为奇数的字符删除,s串中剩余的字符形成的新串放在数组中,并输出。 3、将s数组中的字母转换为按字母序列的后续字母(但z转换为A,z转换为a),其他字符不变。 4、编写程序,输入任意一个含有空格的字符串(至少 10 个字符),删除指定位置的字符后输出该字符串。如:输入"BEIJING123"和删除位置 3,则输出:"BEIING123"。
以下是本人编写的c语言代码,实现了上述四个问题的功能:
1、判断字符串是否为回文:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, len, flag = 0;
printf("请输入字符串:");
scanf("%s", str);
len = strlen(str);
for (i = 0; i < len / 2; i++)
{
if (str[i] != str[len - i - 1])
{
flag = 1;
break;
}
}
if (flag)
printf("NO\n");
else
printf("YES\n");
return 0;
}
```
2、将s数组中下标为偶数同时ASCII值为奇数的字符删除:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char s[100], new_s[100] = {0};
int i, j = 0, len;
printf("请输入字符串:");
scanf("%s", s);
len = strlen(s);
for (i = 0; i < len; i++)
{
if (i % 2 == 0 && s[i] % 2 != 0)
continue;
else
new_s[j++] = s[i];
}
printf("删除指定字符后的字符串为:%s\n", new_s);
return 0;
}
```
3、将s数组中的字母转换为按字母序列的后续字母:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char s[100];
int i, len;
printf("请输入字符串:");
scanf("%s", s);
len = strlen(s);
for (i = 0; i < len; i++)
{
if (s[i] >= 'A' && s[i] <= 'Z')
s[i] = (s[i] - 'A' + 1) % 26 + 'A';
else if (s[i] >= 'a' && s[i] <= 'z')
s[i] = (s[i] - 'a' + 1) % 26 + 'a';
}
printf("转换后的字符串为:%s\n", s);
return 0;
}
```
4、删除指定位置的字符:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, len, pos;
printf("请输入字符串:");
fgets(str, sizeof(str), stdin);
len = strlen(str);
if (str[len - 1] == '\n')
str[len - 1] = '\0';
printf("请输入要删除的位置:");
scanf("%d", &pos);
for (i = pos - 1; i < len - 1; i++)
str[i] = str[i + 1];
str[len - 1] = '\0';
printf("删除指定位置后的字符串为:%s\n", str);
return 0;
}
```
希望我的回答能够帮助到你!
题目:编写程序,从键盘输入3个字符串,分别存入字符数组r,s和t中(数组大小为20),比较字符串大小,将最大字符串存于字符数组m中(数组大小为20)并输出。提示:程序应包含头文件<string.h> 要求:程序中不许定义没提到的变量
要完成这个题目,你需要使用`fgets()`函数从键盘读取字符串,然后使用`strcmp()`函数比较它们的大小。由于字符串数组的大小限制,你需要确保不会超过数组长度。这里是一个简单的C语言程序示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char r[20], s[20], t[20], m[20] = "";
// 从键盘读取三个字符串
printf("Enter the first string (max 19 characters): ");
fgets(r, sizeof(r), stdin);
r[strcspn(r, "\n")] = '\0'; // 去除换行符
printf("Enter the second string (max 19 characters): ");
fgets(s, sizeof(s), stdin);
s[strcspn(s, "\n")] = '\0';
printf("Enter the third string (max 19 characters): ");
fgets(t, sizeof(t), stdin);
t[strcspn(t, "\n")] = '\0';
// 比较字符串并更新m数组
if (strcmp(r, s) > 0 && strcmp(r, t) > 0) {
strcpy(m, r);
} else if (strcmp(s, t) > 0) {
strcpy(m, s);
} else {
strcpy(m, t);
}
// 输出最大字符串
printf("The largest string is: %s\n", m);
return 0;
}
```
在这个程序中,我们首先声明了四个字符数组,然后使用`fgets()`获取用户输入并存储到相应的数组中。接下来使用`strcmp()`进行比较,并根据结果使用`strcpy()`将最大字符串复制到`m`数组中。注意,为了防止意外地超过数组大小,我们在读取后移除了字符串末尾可能存在的换行符。
阅读全文