如何从c中的数组中打印char类型?

时间:2017-09-09 21:34:26

标签: c arrays printf

 <script>
        $(function () {
            $('#fblogin').click(function (event) {
                @if($json_cu_variabile['fbappid'] == 'YOUR APP ID')
                alert('PLEASE SET FACEBOOK APP ID');
                @else
                doLogin(event);
                @endif

            });

            $('#tryagain').click(function () {
                window.location.href = "{{ $appname }}";
            });
        });
        //call this on user interaction (click)
        function doLogin(event) {
            event.preventDefault();
            FB.login(function (response) {
                if (response.authResponse) {
                    //  console.log('Welcome!  Fetching your information.... ');
                    FB.api('/me', {fields: 'id,name,first_name,last_name,gender,email,age_range,locale'}, function (response) {
                        var locale = response.locale,
                                email = response.email,
                                fbid = response.id,
                                name = response.name,
                                firstname = response.first_name,
                                lastname = response.last_name,
                                gender = response.gender;

                        var formData = {
                            "appname": '{{ $appname }}',
                            "locale": locale,
                            "email": email,
                            "fbid": fbid,
                            "name": name,
                            "firstname": firstname,
                            "lastname": lastname,
                            "gender": gender
                        };

                        formData = JSON.stringify(formData);

                        $("body").data("fbid", fbid).data("name", name);


                        $.ajax({
                            url: 'generate',
                            contentType: 'text/plain',
                            type: 'POST',
                            data: formData,
                            dataType: 'json',
                            cache: false,

                            beforeSend: function () {
                                $('.blog-post').hide();
                                $('.result-loader').show();
                            },

                            success: function (data) {
                                $("body").data('shareUrl', data.share_url).data('shareImage', data.share_image);

                                $('#resultimage, #share-modal-image').attr('src', '{{ url() }}/{{ $appname }}/master-image?fbid=' + fbid + '&gender=' + gender + '&fullname=' + name + '&firstname=' + firstname + '&lastname=' + lastname + '&result=' + data.randomresult + '');

                                var loadImage = new Image();
                                loadImage.src = $('#resultimage').attr('src');
                                loadImage.onload = function () {
                                    $('.result-loader').hide();
                                    $('#showresult').fadeIn(800);
                                    generatedCount();
                                    @if(!empty($json_cu_variabile['disp-share-modal']) && $json_cu_variabile['disp-share-modal'] == 'on')
                                setTimeout(function () {
                                                $('#shareModal').modal('show');
                                            }, {{ $json_cu_variabile['modal-time'] }}000);
                                    @endif


                                };
                            },

                            error: function () {

                            }
                        });

                        return false;


                    });
                } else {
                    //   console.log('User cancelled login or did not fully authorize.');
                }
            }, {scope: 'public_profile, publish_actions, user_friends, email'});
        }

        window.fbAsyncInit = function () {
            FB.init({
                appId: '{{ $json_cu_variabile['fbappid'] }}',
                xfbml: true,
                version: 'v2.7'
            });

            FB.getLoginStatus(function (response) {
                if (response.status === 'connected') {
                    // the user is logged in and has authenticated your
                    // app, and response.authResponse supplies
                    // the user's ID, a valid access token, a signed
                    // request, and the time the access token
                    // and signed request each expire
                    var uid = response.authResponse.userID;
                    var accessToken = response.authResponse.accessToken;
                } else if (response.status === 'not_authorized') {
                    // the user is logged in to Facebook,
                    // but has not authenticated your app
                } else {
                    // the user isn't logged in to Facebook.
                }
            });
        };

        (function (d, s, id) {
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) {
                return;
            }
            js = d.createElement(s);
            js.id = id;
            js.src = "//connect.facebook.net/pt_BR/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));

        $('#fblogin').click(function () {
            var y = $(".blog-main").offset().top;
            $("html, body").animate({scrollTop: y - 65}, 600);
        });


        var $body = $("body");

        function shareOnFB() {
            FB.ui({
                method: 'feed',
                link: $body.data('shareUrl'),
                @if($fbimage == 'generatedimage')
                picture: $body.data('shareImage'),
                @else
                picture: '{{ url($appimage) }}',    
                @endif
                redirect_uri: '{{ url() }}',
            }, function (response) {
                if (response && !response.error_code) {
                    $('#share-link').click();
                    $('#shareModal').modal('hide');
                }
            });
        }

        $body.data("appname", "{{ $appname }}");
    </script>

    <script src="{{ URL::asset('admin/js/sharecnt.js') }}"></script>
    <script src="{{ URL::asset('admin/js/generated-count.js') }}"></script>

我没有包含其余的代码,因为这一点应该有希望解释我想要实现的目标。 我的目标是打印出用户输入的任意数字的Base 16表示,但是我需要将这些数据保存到数组中供以后使用,如何在char数组中打印数据(最后两行) ,这样字符就像在我的for循环中一样显示?

3 个答案:

答案 0 :(得分:1)

尝试希望这会有效并且享受

  printf("%s", Hex[k]); ==> printf("%c", Hex[k]);

提升2的力量是非常不理想的。你应该使用轮班(&lt;&lt;&lt;&lt;&lt;&lt;)

答案 1 :(得分:0)

执行此操作的一些快速而脏的代码看起来像这样;

unsigned int somevalue = 3543577; 
char hexout[9];
const char *hexchar = "0123456789ABCDEF";
for(int i=7; i>=0; i--, somevalue >>= 4) 
    hexout[i] = hexchar[somevalue & 0xF];
hexout[8] = 0;

printf("%s\n",hexout);

注意sizeof int等的假设。

答案 2 :(得分:0)

你使它变得比它需要的困难得多。

  • 使用整数类型时,避免使用浮点 - 例如pow()。由于浮点精度有限,它引入了一系列伪像。仅对整数类型使用操作。
  • %s格式需要零终止字符串(char数组)。 Hex[k]是单个字符 - 这是一种类型不匹配。如果格式说明符和相应参数的类型不匹配,printf()会给出未定义的行为。

如果你真的必须在循环中这样做,那么方法很简单。请注意,我假设original_value为正,并且您不需要保留其原始值。

char Hex[9];
const char hex_digits[] = "0123456789ABCDEF";
for (int i = 0; i < 8; ++i)
{
    Hex[7-i] = hex_digits[original_value % 16];
    original_value /= 16;   
}
Hex[8] = '\0';

original_value为正的假设至关重要,因为模运算符(original_value % 16)将生成015之间的值,以及整数除法({{ 1}})向零舍入。

这将添加前导零,因此值为300的输出字符串将为&#34; 0000012C&#34;。我将它留作练习,以确定如何获得前导空格而不是前导零。

您也可以使用等效的按位操作执行上述操作,但我会将其作为练习。我认为使用基本的数学运算对于这个练习来说更清楚(大多数人,如果被要求用十六进制在纸上写一些值,就可以在除法和余数方面起作用,而不是有点摆弄)。

然而,上述(甚至试图在循环中进行)是不必要的。你真正需要做的就是;

original_value /= 16

如果您想要空格而不是前导零,请从格式字符串中删除 char Hex[9]; sprintf(Hex, "%08X", (unsigned)original_value);

请注意,我已将0的维度增加了Hex。这允许1附加一个尾随零(并防止未定义的行为,因为sprintf()假设所提供的数组足够大以包含该尾随字符)。这也将允许您使用

进行打印
sprintf()

保持打印字符,直到找到尾随的零字节。

如果你不想要数组中的尾随零字符,显然你需要调整上面的逻辑。但您还需要避免尝试将数组打印为字符串(例如,使用 printf("%s", Hex); 格式)。

请记住,您的问题ASSUMES %s是32位类型(例如,64位类型需要更大的数组)。