//下面程序的功能是将两个字符串s1和s2连接起来。请填空。 #include<stdio.h> char *conj(char *p1,char *p2) { char *p=p1; while(*p1) ______; while(*p2) { *p1=______; p1++; p2++; } ______ return p; } main() { char s1[80],s2[80]; gets(s1); gets(s2); conj(s1,s2); puts(s1); }
时间: 2024-02-14 14:29:42 浏览: 52
下面是填空后的程序:
```c
#include<stdio.h>
char *conj(char *p1, char *p2)
{
char *p = p1;
while (*p1)
p1++;
while (*p2)
{
*p1 = *p2;
p1++;
p2++;
}
*p1 = '\0';
return p;
}
int main()
{
char s1[80], s2[80];
gets(s1);
gets(s2);
conj(s1, s2);
puts(s1);
return 0;
}
```
在这个程序中,我们使用两个指针 `p1` 和 `p2` 分别指向字符串 `s1` 和 `s2` 的起始位置。首先,我们将指针 `p` 指向 `s1`,然后使用 `while` 循环找到 `s1` 的末尾位置。接下来,我们使用另一个 `while` 循环将 `s2` 中的字符逐个复制到 `s1` 的末尾,直到遇到字符串结束符。最后,我们在 `s1` 的末尾添加字符串结束符 `\0` 并返回指针 `p`。
这样,程序将会将两个字符串连接起来,并输出结果。
相关问题
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <limits.h> // 假设的哈夫曼树节点结构(可能需要一个
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <limits.h>
这是一个包含了几个标准C库头文件的代码,分别是stdio.h、stdlib.h、string.h和limits.h。这些头文件定义了一些常见的C函数和类型,如输入输出函数、内存管理函数、字符串处理函数等。
关于假设的哈夫曼树节点结构,这取决于具体的实现方式和需要的数据结构。一般而言,哈夫曼树节点包含一个权重值和两个子节点指针(或者叶子节点包含字符信息),可以定义如下:
struct huff_node {
int weight;
struct huff_node *left;
struct huff_node *right;
};
其中weight表示该节点的权重值,left和right分别表示该节点的左右子节点。
为程序添加备注注意对齐#include <stdio.h> #include <stdlib.h> #include <string.h> #include <dirent.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <pwd.h> #include <grp.h> #include <time.h> void shell_ls_l(char *file,struct stat st) { char limi
/*
* 该函数实现了类似于Linux终端中的ls -l命令的功能,可以显示文件的详细信息。
* 参数file为要显示信息的文件名;
* 参数st为文件的stat结构体,包含了文件的各种信息,如权限、大小、修改时间等。
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <pwd.h>
#include <grp.h>
#include <time.h>
void shell_ls_l(char *file,struct stat st) {
char limit[10]="rwxrwxrwx"; // 文件权限对应的字符
char perms[11]="----------"; // 文件权限字符串
int i=0;
int j=0;
int k=0;
struct passwd *user; // 用户信息结构体
struct group *group; // 用户组信息结构体
// 设置文件权限字符串
for(i=0;i<9;i++) {
if(st.st_mode & (1<<(8-i))) {
perms[i]=limit[i];
}
}
// 根据文件类型设置第一个字符
switch(st.st_mode & S_IFMT) {
case S_IFLNK:
perms[0]='l';
break;
case S_IFDIR:
perms[0]='d';
break;
case S_IFCHR:
perms[0]='c';
break;
case S_IFBLK:
perms[0]='b';
break;
case S_IFIFO:
perms[0]='p';
break;
case S_IFSOCK:
perms[0]='s';
break;
default:
perms[0]='-';
break;
}
printf("%s ",perms); // 输出文件权限
printf("%d ",(int)st.st_nlink); // 输出硬链接数
user=getpwuid(st.st_uid); // 获取文件拥有者信息
group=getgrgid(st.st_gid); // 获取文件拥有者组信息
printf("%s %s ",user->pw_name,group->gr_name); // 输出拥有者和所属组
printf("%8ld ",st.st_size); // 输出文件大小
char *time_str=ctime(&st.st_mtime); // 获取文件最后修改时间
time_str[strlen(time_str)-1]='\0'; // 去掉不需要的换行符
printf("%s ",time_str); // 输出最后修改时间
printf("%s\n",file); // 输出文件名
}