printf打印多个数组元素

Gar*_*y M 0 c

例如,如果我输入"qwer",这会让我输出"呃".如果我只要求userIn [2],如何输出"r"?

另外,"char userIn [256]"是否有一个较不脏的替代品?我看到它的方式,256限制预先确定用户可以输入什么,这是不好的.但我不知道如何使userIn没有预定的大小.

char userIn[256];
printf("Type the message to be encoded: ");
scanf("%s", &userIn);
printf("\n");;
printf("This was typed: %s\n", &userIn[2]);
Run Code Online (Sandbox Code Playgroud)

AnT*_*AnT 5

你不是要求userIn[2].你要的是一个从...开始的字符串&userIn[2].格式说明符%s表示"字符串".&userIn[2]确实是从字符串开始的"er".这是你看到的输出.

如果要打印单个字符,可以使用%c格式说明符并传入userIn[2]而不是&userIn[2]

printf("%c\n", userIn[2]);
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用%s,但在这种情况下,您必须通过精度说明符显式限制要打印的字符串的长度,如

printf("%.1s\n", &userIn[2]);
Run Code Online (Sandbox Code Playgroud)

上述方法:打印字符串,但输出不超过1个字符.

PS正如评论中指出的那样,您的scanf通话不正确.它应该是scanf("%s", userIn)或者scanf("%s", &userIn[0]),但不是你现在拥有的.您现在拥有的内容通常会"正常工作",但指针的类型仍然不正确.许多编译器会发出警告.