#include <stdio.h> #include <string.h> void myrevstr(char s1[], char s2[]); //将字符串s2反转后存放在s1中 void myrevstr(char s1[], char s2[]) { int pos = 0; char *p = s2+strlen(s2)-1; while (p>= (1) ) { s1[pos] = *p; (2) ; pos++; } (3) ; } int main() { char s1[80]; myrevstr(s1, "HelloW"); printf("%s", s1);//输出为WolleH return 1; }
时间: 2024-01-23 11:04:01 浏览: 66
完善程序如下:
```
#include <stdio.h>
#include <string.h>
void myrevstr(char s1[], char s2[]); //将字符串s2反转后存放在s1中
void myrevstr(char s1[], char s2[]) {
int pos = 0;
char *p = s2 + strlen(s2) - 1;
while (p >= s2) {
s1[pos] = *p;
p--;
pos++;
}
s1[pos] = '\0';
}
int main() {
char s1[80];
myrevstr(s1, "HelloW");
printf("%s", s1);//输出为WolleH
return 0;
}
```
其中,需要注意的点有:
1. 在 `while` 循环中,判断条件为 `p>=s2`,即指针 `p` 没有超过字符串 `s2` 的起始地址。
2. 在循环中,先将 `p` 所指向的字符赋值给 `s1` 中的对应位置,再让指针 `p` 向前移动一位。
3. 循环结束后,需要在 `s1` 的末尾添加一个空字符 `\0`,以表示字符串的结束。
相关问题
程序功能:输入一个字符串s1,将其中的大写字母转换为对应的小写字母,小写字母转换为对应的大写字母,其它字符不变。用s2存储转换后的结果(s1不变),并输出串s2,编写转换函数完成此功能。 如:输入串s1:a#Bc345D3 输出串s2:A#bC345d3 #include<stdio.h> #define L 256 void convert( char str1char str2 ); #include<stdio.h> main() { char s1[L],s2[L]; puts("input a string:"); gets(s1); convert(s1s2); puts(s2); } void convert( char str1char str21) {/*填写相应代码*/
代码如下:
```c
#include <stdio.h>
#include <string.h>
#define L 256
void convert(char str1[], char str2[]) {
int i;
for (i = 0; str1[i] != '\0'; i++) {
if (str1[i] >= 'a' && str1[i] <= 'z') {
str2[i] = str1[i] - 'a' + 'A';
} else if (str1[i] >= 'A' && str1[i] <= 'Z') {
str2[i] = str1[i] - 'A' + 'a';
} else {
str2[i] = str1[i];
}
}
str2[i] = '\0';
}
int main() {
char s1[L], s2[L];
puts("input a string:");
gets(s1);
convert(s1, s2);
printf("%s\n", s2);
return 0;
}
```
注意:这里使用了C标准库中的`gets()`函数,但是这个函数不安全,容易导致缓冲区溢出漏洞,建议使用`fgets()`函数代替。
1. 编一个函数,将字符串s2连接到s1后面,不用strcat函数。(请填空)#include <stdio. h> #include <string. h> void mainO ( char s1[80], s2[40]; int i=0, j=0; gets(s1) ; gets(s2) ; /*查找定位s1的连接点(即结束符) */ 8灵静话/*将s2逐个字符复制到s1后,对应下标后移*/ /*手工对s1加结束符*/ printf( "The new string is:%s” ,s1);
#include <stdio.h>
#include <string.h>
void mystrcat(char s1[], char s2[]) {
int len1 = strlen(s1);
int len2 = strlen(s2);
int i, j;
for (i = len1, j = 0; j < len2; i++, j++) {
s1[i] = s2[j];
}
s1[i] = '\0';
}
int main() {
char s1[80], s2[40];
printf("Enter string s1: ");
gets(s1);
printf("Enter string s2: ");
gets(s2);
mystrcat(s1, s2);
printf("The new string is: %s\n", s1);
return 0;
}
阅读全文