我正在我的一张演讲幻灯片中使用此代码,我的问题之一是在打印数组时,为什么我们不能使用指针而不是仅打印“ a”,所以在打印的最后一行声明
printf("\n message after decryption: %s\n", a);
我不明白为什么我们不能使用指针来打印数组。有人可以向我解释为什么不能这样做吗?
printf("\n message after decryption: %s\n", *q);
#include <stdio.h>
#define NUM 78
int main()
{
int i = 0;
char a[] = "Hello CSE 240";
printf("\n message: %s\n ", a);
while(a[i] != '\0'){a[i] = *(a+i)+1;i++;}
printf("\n message after encryption: %s\n ", a);
char *q = a;
while(*q != '\0'){*q = *q-1;q++;}
printf("\n message after decryption: %s\n", a);
}
答案 0 :(得分:0)
您想在q
修改循环之后打印出数组的内容,但是在所有增量之后它都指向空终止字符,即'\0'
-因此在其中使用q
printf
仅会打印-message after decryption:
-修改后的数组/字符串将不会打印。
要使用q
进行此操作,您需要在while循环结束后将q
分配给数组的第一个元素:q=a
。
然后此语句将按您希望的方式工作:
printf("\n message after decryption: %s\n", q);
最好使用适当的格式说明符更改打印语句。
答案 1 :(得分:0)
#include <stdio.h>
#define NUM 78
int main()
{
int i = 0;
char a[] = "Hello CSE 240";
printf("\n message: %s\n ", a);
while(a[i] != '\0'){a[i] = *(a+i)+1;i++;}
printf("\n message after encryption: %s\n ", a);
char *q = a;
while(*q != '\0'){*q = *q-1;q++;
//decrypting the value of a
}//end of this is pointing to null
q=a;//repointing to point a
printf("\n message after decryption: %c\n", *q);//H is printed
printf("\n message after decryption: %s\n", q);//Hello CSE 240 is printed
}