3.请编写函数fun,其功能是将形参s所指字符串放入形参a所指的字符数组中,使a中存 放同样的字符串。说明:不得使用系统提供的字符串函数。 #include <stdio.h> #define N void NONO(); void fun( char { } 20 *a , char *s) main() { char s1[N], *s2="abcdefghijk"; fun( s1,s2); printf("%s\n", s1); printf("%s\n", s2); }
时间: 2024-01-07 18:03:36 浏览: 74
下面是实现函数fun的代码:
```
#include <stdio.h>
void fun(char a[], char *s) {
int i = 0;
while (s[i] != '\0') {
a[i] = s[i];
i++;
}
a[i] = '\0';
}
int main() {
char s1[20], *s2 = "abcdefghijk";
fun(s1, s2);
printf("%s\n", s1);
printf("%s\n", s2);
return 0;
}
```
函数fun的实现思路是,使用while循环遍历字符串s,将其逐一赋值给字符数组a,直到遇到字符串结束符'\0'为止。最后手动在字符数组a的末尾添加字符串结束符'\0'。在主函数中调用函数fun,并输出结果验证其正确性。
相关问题
请编写函数fun,其功能是将形参s所指字符串放入形参a所指的字符数组中,使a中存放同样的字符串。说明:不得使用系统提供的字符串函数。要求工程名或项目名为p4,c源文件名为b4.c。
好的,下面是符合要求的函数fun的代码实现:
```c
void fun(char *s, char a[])
{
int i = 0;
while(s[i] != '\0')
{
a[i] = s[i];
i++;
}
a[i] = '\0'; //加上字符串结束符
}
```
该函数的实现很简单,就是依次将s中的字符复制到a中,直到遇到字符串结束符'\0'为止。最后别忘了在a的末尾加上'\0'作为字符串结束符。
在工程p4中,可以将该函数放在b4.c文件中编写。
给定程序中,函数FUN的功能是:求形参SS所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长饿字符串等长。SS所指字符串数组中共有M个字符串,且串长<N。
在C语言中,你可以使用以下步骤来实现这个功能:
```c
#include <stdio.h>
#include <string.h>
// 函数声明,定义返回值类型为int,因为我们要返回最长字符串的长度
int FUN(char *ss[], int m, int n);
// 主函数
int main() {
char ss[10][50]; // 假设最多有10个字符串,每个最多50个字符
int m = 5; // 实际字符串的数量
int max_len = FUN(ss, m, sizeof(ss[0])); // 调用FUN函数
// 打印处理后的字符串数组
for (int i = 0; i < m; i++) {
if (strlen(ss[i]) == max_len) { // 如果当前字符串是最长的
printf("%s", ss[i]); // 直接打印
} else {
// 使用'*'填充到最长字符串长度
while(strlen(ss[i]) < max_len) {
ss[i] = strcat(ss[i], "*");
}
printf("%s", ss[i]);
}
printf("\n"); // 换行
}
return 0;
}
// 函数 FUN 的实现
int FUN(char *ss[], int m, int n) {
int max_len = 0; // 初始化最长字符串长度为0
for (int i = 0; i < m; i++) {
int len = strlen(ss[i]); // 获取当前字符串长度
if (len > max_len) { // 更新最长字符串长度
max_len = len;
}
}
return max_len; // 返回最长字符串的长度
}
```
`FUN` 函数遍历字符串数组,计算每个字符串的长度,并保存最长字符串的长度。主函数中,根据`FUN`函数的结果对每个字符串进行处理,如果长度不够,则在其右侧添加星号直到达到最长长度。
阅读全文