从2D阵列打印字符

时间:2019-06-10 13:51:59

标签: c arrays string pointers multidimensional-array

使用指针,我可以找到要打印的实际字符(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。没用而是打印了一个双向箭头。 谁能告诉我我要去哪里错了?

3 个答案:

答案 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的帮助...