#include <stdio.h> #include <string.h> int main() { char *s[4]={"ABCD","12","EFGH","34"}; int i=1; while(*s[1]!='\0') { printf("%s\n",s[i]+strlen(s[1])-1); s[1]++; i++; } return 0; } s[1++]是用来干啥的
时间: 2024-03-29 20:41:57 浏览: 13
在这段代码中,`s[1]++`是用来让指针`s[1]`向后移动一位,指向字符串中下一个字符。具体来说,这段代码中使用了指针数组`s`,其中`s[1]`是指向字符串"12"的指针。在每次循环中,首先通过`strlen(s[1])`获取字符串"12"的长度(即2),然后通过`s[i]+strlen(s[1])-1`获取指向字符串`s[i]`中从字符串"s[1]"结尾开始的字符的指针,最后通过`s[1]++`让指针`s[1]`向后移动一位,指向字符串"12"的下一个字符。这样可以在下一次循环中获取字符串`s[i]`中从字符串"s[1]"结尾开始的下一个字符。
相关问题
以下程序输出ABCD,请填空。 #include <stdio.h> #include <string.h> int main(){ char a[10]="ABCD",b[10]={0}; strcpy(____空白8_______); puts(b); }
可以填写为:`b, a`。
完整程序如下:
```
#include <stdio.h>
#include <string.h>
int main() {
char a[10] = "ABCD", b[10] = {0};
strcpy(b, a);
puts(b);
return 0;
}
```
输出结果为:`ABCD`
帮我看看下面这段C语言程序当我输入“ABCD”是,输出的结果不是“ABCDDCBA” #include <conio.h> #include <stdio.h> #include <string.h> void fun(char *str,char *t) {int i,d; d=*str for(i=0;i<d;i++) *(t+i)=*(str+i); for(i=0;i<d;i++) *(t+d+i)=*(str+d-1-i); *(t+2*d)='\0'; } main(){ char s[100],t[100]; printf("\nPlease enter string S:"); scanf("%s",s); fun(s,t); printf("\nThe result is: %s\n",t); }
在这段程序中,变量 d 的值应该是字符串长度,但是却没有进行字符串长度的计算,而是直接将字符串第一个字符的 ASCII 码作为长度,所以当输入的字符串的第一个字符的 ASCII 码不是字符串长度时,程序就会出现错误。
例如,当输入字符串为“ABCD”时,程序会将字符 'A' 的 ASCII 码 65 作为字符串长度,因此只会复制字符串的前 65 个字符,然后程序会继续执行,将字符串的后 65 个字符再次复制到新的字符串中,这就导致了输出结果不是“ABCDDCBA”。
要解决这个问题,可以使用库函数 `strlen()` 来计算字符串的长度,将其作为参数传递给函数 `fun()`。修改后的程序如下:
```c
#include <conio.h>
#include <stdio.h>
#include <string.h>
void fun(char *str, char *t) {
int i, d;
d = strlen(str);
for (i = 0; i < d; i++)
*(t + i) = *(str + i);
for (i = 0; i < d; i++)
*(t + d + i) = *(str + d - 1 - i);
*(t + 2 * d) = '\0';
}
int main() {
char s[100], t[100];
printf("\nPlease enter string S:");
scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);
return 0;
}
```
这样,无论输入的字符串是什么,程序都能正确输出“ABCDDCBA”。
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)