微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

一个 char 指针变量,它的值来自一个函数

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

我想打印如下:

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

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

解决方法

我没有看到打印部分有问题,通过返回指向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 表示空值,1 表示 SOH,依此类推。如果您需要打印奇怪的输出,您就无法打印控制代码(ASCII 代码

#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
,

您的语法似乎合法。我高度怀疑 cigar[i] 捐赠了您正在寻找的正确角色。尝试通过使用 cigar[i](char) cigar[i] 转换为字符来确认这一点。您可以将 cigar[i] 作为字符串 %s 输出,作为调试它真正指向何处的一部分。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。