我的代碼給了我期望的無符號字符指針的不同長度。 我以爲我應該得到12(或13)或0(或1)爲pph和pphChar。 我的問題是什麼?當我重複跑步時,每次都得到不同的長度和長度的結果。什麼是無符號字符strlen的正確方法*
我怎樣才能得到pph的長度?
我是否需要在末尾加上'\ n'來確定長度?
我使用VS2010,XP和C++。
#include "stdafx.h"
#include <stdlib.h>
#include <Windows.h>
#include <stdio.h>
#include <tchar.h>
typedef unsigned char uint8_t;
int _tmain(int argc, _TCHAR* argv[])
{
int length;
int len = 13;
uint8_t *phh;
char * phhChar;
printf("assigned mem %d\n", sizeof(unsigned char)*len);
phh = (unsigned char *) malloc(sizeof(unsigned char)*len);
phhChar = (char *) malloc(sizeof(char)*len);
phh[0] = (unsigned char) '1';
phh[1] = (unsigned char) '2';
phh[2] = (unsigned char) '3';
phh[3] = (unsigned char) '4';
phh[4] = (unsigned char) '5';
phh[5] = (unsigned char) '6';
phh[6] = (unsigned char) '7';
phh[7] = (unsigned char) '8';
phh[8] = (unsigned char) '9';
phh[9] = (unsigned char) '0';
phh[10] = (unsigned char) '1';
phh[11] = (unsigned char) '2';
phh[12] = (unsigned char) '\n';
phhChar[0] = (char) '\n';
printf("size of char %d\n", sizeof(unsigned char));
length = strlen((const char*)phh);
int oneLength = strlen((const char*)phhChar);
printf("len %d\n", length);
printf("onelebgth %d\n", oneLength);
OUTPUT
分配MEM 13
大小炭1
len個32 - 每次都不同
oneLength 32 - 每次都不同
您不會零終止字符串,所以結果是隨機的。 – bmargulies
順便說一下,'sizeof(char)'和'sizeof(unsigned char)'保證是1. –
你可以用C++編寫C語言,但是這種方式不符合目的嗎? – David