数组指针问题
int main()
{
char str;
char (*p)=&str;
int i;
printf("请输入字符串:");
fgets(str,9,stdin);
for(i=0;i<9;i++)
{
printf("%c\n",*(*p+i));
}
return 0;
}
各位大佬,因电脑问题无法上传结果图片,如输入abcdefghi,打印结果为:
a
b
c
d
e
f
g
h
a
求解答,为何最后一个元素变为a了 #include <stdio.h>
int main()
{
char str;
char (*p)=&str;
int i;
printf("请输入字符串:\n");
fgets(str,9,stdin);
for(i=0;i<9;i++)
{
printf("%c\n",*(*p)+i);
}
return 0;
} #include <stdio.h>
int main(){
char str;
char (*p) = &str;
printf("请输入字符串:");
fgets(str, 9, stdin);
for(int i = 0; i < 9; i++)
printf("%c\n", **p+i); // <------ 这里 ------
return 0;
} 本帖最后由 jhq999 于 2022-1-10 15:24 编辑
不知道你怎么出现a,应该是'\0' 傻眼貓咪 发表于 2022-1-10 15:18
找到原因了,感谢,请问为何会把()去掉就可以了?因为老乌龟课件上的例子是带()的 jhq999 发表于 2022-1-10 15:23
不知道你怎么出现a,应该是'\0'
可能是编译器问题,我用的是DEVc 本帖最后由 傻眼貓咪 于 2022-1-11 15:01 编辑
爱俯卧撑的123 发表于 2022-1-11 14:10
找到原因了,感谢,请问为何会把()去掉就可以了?因为老乌龟课件上的例子是带()的
我猜课件上的例子是:#include <stdio.h>
int main(){
char *str = "HelloWorld"; // 常量字符串
char *(*p) = &str;
for(int i = 0; i < 10; i++){
printf("%c\n", *(*p+i)); // 如你所愿,带括号
}
return 0;
} 傻眼貓咪 发表于 2022-1-11 15:00
我猜课件上的例子是:
#include <stdio.h>
int main()
{
int temp = {1, 2, 3, 4, 5};
int (*p2) = &temp;
int i;
for (i = 0; i < 5; i++)
{
printf("%d\n", *(*p2 + i));
}
return 0;
}
是这个,所以是因为char和int类型的不同嘛 爱俯卧撑的123 发表于 2022-1-11 16:54
#include
int main()
#include <stdio.h>
int main(){
char temp = {'a', 'b', 'c', 'd', 'e'};
char (*p2) = &temp;
int i;
for (i = 0; i < 5; i++){
printf("%c\n", *(*p2 + i)); // 如你所愿,有括号
}
return 0;
}
/*
以下字符数组/字符串类型:
char *a = "Hello";
char b = "Hello";
char c = {'H', 'e', 'l', 'l', 'o'};
以上三种不一样东西
*/ 傻眼貓咪 发表于 2022-1-11 17:31
谢谢您{:5_108:} 傻眼貓咪 发表于 2022-1-11 17:31
#include<stdio.h>
int main()
{
char str;
char (*p)=&str;
int i;
printf("请输入字符串:");
fgets(str,10,stdin);
for(i=0;i<9;i++)
{
printf("%c\n",*(*p+i));
}
return 0;
}
fgets函数里我把9改为10,也可以完整输出abcdefghi,是不是说明,fgets函数获得的字符串中,'\0'也占其中一个位置。 爱俯卧撑的123 发表于 2022-1-11 20:46
#include
int main()
数组越界了 爱俯卧撑的123 发表于 2022-1-11 20:46
#include
int main()
不建议这样做(越界),你定义长度多少,就输入多少 本帖最后由 傻眼貓咪 于 2022-1-11 21:26 编辑
爱俯卧撑的123 发表于 2022-1-11 20:46
#include
int main()
#include <stdio.h>
int main()
{
char str, c;
char (*p) = &str;
int i = 0;
printf("请输入字符串:");
while((c = getchar()) != '\n'){
str = c;
}
for(i = 0; i < 9; i++)
printf("%c\n",*(*p + i)); // 如你所愿,有括号
return 0;
}
#include <stdio.h>
int main()
{
char str, c;
char (*p) = &str;
printf("请输入字符串:");
fgets(str, 10, stdin); // 最多输入九个字符,第十个无效(fgets() 取 num-1 个字符,num 为字符串长度)
for(int i = 0; i < 9; i++)
printf("%c\n",*(*p + i)); // 如你所愿,有括号
return 0;
}请输入字符串:abcdefghi
a
b
c
d
e
f
g
h
i 傻眼貓咪 发表于 2022-1-11 21:16
完全明白了,狠狠的感谢{:5_106:} 学习代码
页:
[1]