【发布时间】:2017-12-05 10:42:18
【问题描述】:
我只是尝试使用指针打印一串字符,但输出不正确。有人能告诉我为什么吗?方法 display_chunks() 用于打印数组中除第一个字符之外的每个字符串。但是,尽管我在打印字符串中的最后一个字符后递增指针变量,但似乎打印同一行。
#include <stdio.h>
#include <string.h>
//macros: constants
#define CHUNK_LENGTH (20+1) //each chunk has twenty characters, we add 1 so
//there is space for the null terminator.
#define NUMBER_OF_CHUNKS 4 //the message is spread across 4 chunks.
void display_chunks();
char chunks[NUMBER_OF_CHUNKS][CHUNK_LENGTH];
int main(){
strcpy(chunks[0], "2i1%fsi%fs%jstwrtzx%");
strcpy(chunks[1], "1'H%nx%vznwp~1%kqf|j");
strcpy(chunks[2], "4R3%Wnyhmnj%%%%%%%%%");
strcpy(chunks[3], "3xzhhjxx3'%2%Ijssnx%");
display_chunks();
}
void display_chunks() {
int i, j;
char *arr = chunks[0];
for(i = 0; i < NUMBER_OF_CHUNKS; i++){
for(j = 1; j < CHUNK_LENGTH-1; j++){
printf("%c", *(arr+j));
}
++arr;
printf("\n");
}
}
这是我的输出:
i1%fsi%fs%jstwrtzx%
1%fsi%fs%jstwrtzx%
%fsi%fs%jstwrtzx% 1
fsi%fs%jstwrtzx% 1'
根据克雷格的回答编辑;我似乎不明白指针和双指针之间的区别。我之前尝试的是递增 arr 因为我认为它会指向块中的下一个数组。看起来我错了,我花了一段时间才弄清楚。
抱歉,C 新手:)
【问题讨论】:
-
阅读minimal reproducible example。提供一个工作示例。缺少定义。
-
什么是
chunks声明? -
返回并再次阅读minimal reproducible example。再次编辑。什么是
chunks、NUMBER_OF_CHUNKS、CHUNK_LENGTH。做一个工作的例子。 -
这仍然无法编译,但是如果您在调用函数之前将
strcpy行移到 main 中,它将给出您所说的输出。真的,制作可以编译的东西然后将其粘贴到问题中有多难? -
您的代码按照所写的完全符合预期的方式运行。它的行为没有什么异常。但是您声称“输出不正确”。我们怎么知道你认为这里“不正确”的地方?你期望什么输出?你必须在你的问题中解释这一点。
标签: c arrays string multidimensional-array char