C 字符双指针混淆行为
我正在做一个练习来练习C指针 任务是将输入字符翻译成ASCII码。 例如,字母A是:C 字符双指针混淆行为,c,pointers,C,Pointers,我正在做一个练习来练习C指针 任务是将输入字符翻译成ASCII码。 例如,字母A是: # # # ### # # # # 整个ASCII字母表作为不同行(a到Z plus?)的单个输入提供: 我试图将字母表存储为双指针(字母输入) 我希望将输入打印两次: # ## ## ## ### ### ## # # ### ## # # # # # ### # ## # ## ## ### # # # # # # # # # # ### ### # # # # #
#
# #
###
# #
# #
整个ASCII字母表作为不同行(a到Z plus?)的单个输入提供:
我试图将字母表存储为双指针(字母输入)
我希望将输入打印两次:
# ## ## ## ### ### ## # # ### ## # # # # # ### # ## # ## ## ### # # # # # # # # # # ### ###
# # # # # # # # # # # # # # # # # ### # # # # # # # # # # # # # # # # # # # # # # # #
### ## # # # ## ## # # ### # # ## # ### # # # # ## # # ## # # # # # # ### # # # ##
# # # # # # # # # # # # # # # # # # # # # # # # # # ## # # # # # # # # ### # # # #
# # ## ## ## ### # ## # # ### # # # ### # # # # # # # # # ## # ### # # # # # # ### #
# ## ## ## ### ### ## # # ### ## # # # # # ### # ## # ## ## ### # # # # # # # # # # ### ###
# # # # # # # # # # # # # # # # # ### # # # # # # # # # # # # # # # # # # # # # # # #
### ## # # # ## ## # # ### # # ## # ### # # # # ## # # ## # # # # # # ### # # # ##
# # # # # # # # # # # # # # # # # # # # # # # # # # ## # # # # # # # # ### # # # #
# # ## ## ## ### # ## # # ### # # # ### # # # # # # # # # ## # ### # # # # # # ### #
如何操作字母输入的索引以正确地将每一行打印为字符串
我真的很困惑,因为在for循环中打印似乎工作得很好。然而,紧接着,索引似乎就崩溃了
for (int i = 0; i < H; i++) {
char ROW[1025];
fgets(ROW, 1025, stdin);
alphabet_input[i] = ROW;
}
您可能希望根据您想要的长度调整上述代码(例如1025而不是strlen,或者删除尾随的新行等)
我想提出几点:
- 这就是我建议编写
的方法:malloc
pointer_var = <no cast> malloc(<num_elements> * sizeof *pointer_var); alphabet_input = malloc(height * sizeof *alphabet_input);
alphabet_input[i] = malloc(len + 1);
- 避免所有大写变量。它们通常用于C中的宏
num\u vertical
什么的。给变量起个好名字H
,L
,T
当然不是。变量名来自问题定义。。。我同意,也许我可以修改代码以提高可读性。在这里,问题定义并不规定您在代码内部使用什么名称。具体输入的输出内容。我做了一些修改以使其更易于理解。谢谢,我的评论只是一些友好的建议。@BernardoRodrigues欢迎您。重要的是了解正在发生的事情,而不是看到它在起作用。
for (int i = 0; i < H; i++) {
char ROW[1025];
fgets(ROW, 1025, stdin);
alphabet_input[i] = ROW;
}
char ** alphabet_input;
alphabet_input = malloc(height * sizeof *alphabet_input);
for (int i = 0; i < height; i++) {
char row[1025];
fgets(row, 1025, stdin);
size_t len = strlen(row);
alphabet_input[i] = malloc(len + 1);
strcpy(alphabet_input[i], row);
}
pointer_var = <no cast> malloc(<num_elements> * sizeof *pointer_var);
alphabet_input = malloc(height * sizeof *alphabet_input);
alphabet_input[i] = malloc(len + 1);