使用指针,我可以找到要打印的实际字符(ElGenerico中的'i')。但是屏幕上已经打印出一些奇怪的字符,而不是我想要的字符。
### leichenstein map
## 69.67 sec elapsed
tic()
LTU.map <- world.polys[world.polys$ISO3 == "LTU",]
rasters.values <- extract(rasters, LTU.map)
df <- as.data.frame(rasters.values)
rugged_LTU <- as.data.frame(weighted.mean(x=df$raster_1, w=df$raster_2, na.rm=TRUE))
var_LTU$iso3 <- "LTU"
rm(LTU.map)
toc()
# define master dataframe once
var_master <- var_LTU
### UK map
## 127.31 sec elapsed
tic()
GBR.map <- world.polys[world.polys$ISO3 == "GBR",]
rasters.values <- extract(rasters, GBR.map)
df <- as.data.frame(rasters.values)
rugged_GBR <- as.data.frame(weighted.mean(x=df$raster_1, w=df$raster_2, na.rm=TRUE))
var_GBR$iso3 <- "GBR"
var_master <- rbind(var_master, var_GBR)
rm(GBR.map)
toc()
使用#include<stdio.h>
int main()
{
char *name[]={"Sami","Kevin","ElGenerico"};
printf("%c",(*(name+2)+7));
return 0;
}
输出说明符,此代码的输出为“ ico”。
但是我只想打印字符“ i”。因此,我尝试使用%s
而不是%c
。没用而是打印了一个双向箭头。
谁能告诉我我要去哪里错了?
答案 0 :(得分:1)
我建议使用括号符号以提高可读性。
最初,您有以下内容:
printf("%c",(*(name+2)+7));
您仍然需要用*取消引用以获得所需的输出。 那会给你这个:
printf("%c",*(*(name+2)+7));
但是,这仍然有点令人困惑,而且不太可读。您可以使用括号表示法使它更加简洁,如下所示:
printf("%c", name[2][7]);
现在错误发生的空间越来越少,您仍然可以获得预期的输出。
您的最终代码将如下所示:
#include <stdio.h>
int main()
{
char* name[] = {"Sami", "Kevin", "ElGenerico"};
printf("%c", name[2][7]);
return 0;
}
答案 1 :(得分:0)
您指向的地址错误。改用它:
printf("%c",(*(name[2]+7)));
由于您要引用name
数组中的第三个元素,因此可以使用
name[2]
然后您想将单词ElGenerico
的第7个元素放入,因此我们需要在地址中添加7:
name[2] + 7
获得正确的地址后,我们将输出该地址的值,并使用*
符号:
*(name[2] + 7)
答案 2 :(得分:0)
printf("%c",*(*(name+2)+7));
我使用了它,并解决了,感谢@David和@rcs的帮助...