c - 带有指向数组指针的 printf scanf

标签 c arrays pointers

你好,我有这段代码用指针填充数组并用指针打印它。结果是假的。这是我的代码:

#include<stdio.h>
#include<stdlib.h>

int main(){
int p;
char po[8];
char *i;
i=po;
for(p=0; p<8; p++){
scanf("%c\n", i++);
}
for(p=0; p<8; p++){
printf("%c\n", *(i++));
}
return 0;
}

我错在哪里?

最佳答案

增加指针可能有充分的理由。只是不要忘记在重新使用它们之前将它们重置为初始值!

您的代码应该是:

i=po;
for(p=0; p<8; p++){
scanf("%c\n", i++);
} /* i is now po + 8 ... */
i = po;
for(p=0; p<8; p++){
printf("%c\n", *(i++));
}

现在你应该学会不写这样的代码:

  • block 没有缩进 => 更难阅读
  • 从未测试过 scanf 的值:文件末尾会发生什么(类 Unix 上的 Ctrl-D,Windows 上的 Ctrl-Z)?
  • 连一条评论都没有...

关于c - 带有指向数组指针的 printf scanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33971966/

相关文章:

C - 仅使用 ntdll 的堆栈分配

c - switch 语句中的死代码消除

C:分配给指针时数组的行为

java - 在 Java 中使用非空白字符时 split 方法如何工作?

c++ - 在C++中增加指针后,为什么打印出一个值而不显示NULL/0?

c - 我对摆脱单链表中的循环的担忧

c - 如何用C计算文本文件中的数字

c# - 将 JSON 对象反序列化为 C# 列表

javascript - "Closure"如何影响 jQuery 中 dom 节点的嵌套遍历?

c - "struct user* "和 "struct user *"有什么区别?