c程序在一个框中打印问号作为输出



有一个char指针变量,其值来自一个函数。

char* apple = ....(function call)

我想打印如下:

int len = strlen(apple);
for(i=0;i<len;i++){
printf("%c ", apple[i]);
}

但在控制台中,它在一个框中给出了一个问号作为输出。我该怎么办,该怎么打印?谢谢

您的语法似乎是合法的。我非常怀疑cigar[i]捐赠了你想要的合适的角色。尝试通过使用(char) cigar[i]cigar[i]强制转换为字符来确认这一点。您可以将cigar[i]输出为字符串%s,作为调试的一部分,它真正指向的位置。

我在打印部分没有看到问题,因为需要调查重新运行指向char数组的指针的功能。

// In this example, getString function returns string literal
// That is being iterated in the next for loop over its length and prints its characters
#include <stdio.h>
#include <stdlib.h>
char *getString(void); // declare
int main() {
char *apple = getString();
int len = strlen(apple);
for(int i = 0; i < len ; i++) {
printf("%c ", apple[i]);
}
return 0;
}
char *getString() {
return "somesthing";
}

以下示例将只打印可打印的ascii字符。从0到31,0表示null,1表示SOH,依此类推。简单地说,如果您打印奇怪的输出,则无法打印控制代码(ASCII代码<32(。

#include <stdio.h>
#include <string.h>
#define PRINTABLE_ASCII_CHAR_COUNT 96
/*
Printable chars list
"! " # $ % & ' ( ) * + , - . /
0 1 2 3 4 5 6 7 8 9 : ; < = > ?
@ A B C D E F G H I J K L M N O
P Q R S T U V W X Y Z [  ] ^ _
` a b c d e f g h i j k l m n o
p q r s t u v w x y z { | } ~"
*/
char *getASCIIs(void);
int main() {
char *apple = getASCIIs();
int len = strlen(apple);
for(int i = 0; i < len ; i++) {
// p << i << ((i % 16 == 15) ? 'n' : ' ');
printf("%c ", apple[i]);
}
return 0;
}
char *getASCIIs() {
static char buffer[PRINTABLE_ASCII_CHAR_COUNT];
for (int i = 32, j=0 ; i <= PRINTABLE_ASCII_CHAR_COUNT; i++, j++) {
buffer[j] = i;
}
return buffer;
}

enter code here

相关内容

  • 没有找到相关文章

最新更新