是否可以打印出字符數組中的實體,以便實際上可以看到每個字符都是字符串終止符\ 0和新行\ n ...例如?打印出字符數組中的實體
咱們說一個字符串包含以下
abkdfkdfmdfier\nkdfdfkdkf\n\0
我希望看到通過STD一切::法院
是否可以打印出字符數組中的實體,以便實際上可以看到每個字符都是字符串終止符\ 0和新行\ n ...例如?打印出字符數組中的實體
咱們說一個字符串包含以下
abkdfkdfmdfier\nkdfdfkdkf\n\0
我希望看到通過STD一切::法院
我想你應該寫一個基於舊創建一個新的字符串函數並將'\n','\0'
字符更改爲"\\n","\\0"
字符串。
我可能有一些錯誤,但我的主要想法是這樣的。
Ihope這有幫助。
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
char *mstr;
void newStr(char *str){
char *buf;
if((buf=(char*)malloc(strlen(str)+4)*sizeof(char))==NULL){
printf("err in allocating buffer");
getch();
exit(1);
}
register unsigned int i;
for(i=0;i<strlen(str) & i<30000;i++){
if(str[i]=='\n'){
str[i]=0;
strcpy(buf,"\\n");
strcat(buf,(char*)(str+i+1));
strcat(str,buf));
}
}
strcat(str,"\\0");
}
void main(){
clrscr();
strcpy(mstr,"this is a\n test\nggg\0");
printf("form1:\n%s",str);
newStr(str);
printf("\nform2:\n%s",str);
getch();
}
沒有工作 - 無論如何感謝 – user2991252
您的歡迎,但我認爲這個想法是正確的,你需要改變一點點。但我的筆記本電腦中沒有任何編譯器。 – ncm
您需要檢查字符串中字符的ASCII碼。
for (int i=0; i<strlen(string)+1; i++) {
if (printable(string[i])) cout << string[i]; // If normal char like abc ' ' 123 [email protected]#
else {
int code = string[i];
// i will write for '\n' for example
switch (code) {
case 0x0A : cout << "\\n";
break;
// etc...
}
}
}
現在,printable(char c)
將檢查ASCII值是一些可打印字符的(也檢查它們之間並不像\0
,\n
一些特殊字符等
http://www.asciitable.com/index/asciifull.gif
http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters
下面是使用isprint &流格式化的溶液:
#include <cctype>
void print_escaped(char chr) {
if (std::isprint(chr)) {
std::cout << chr;
} else {
switch(chr) {
case '\0': std::cout << "\\0"; break;
case '\r': std::cout << "\\r"; break;
case '\n': std::cout << "\\n"; break;
case '\t': std::cout << "\\t"; break;
default: // other non printable chars
std::cout << "\\x" << std::setfill('0') << std::setw(2) << std::hex << (int)chr;
break;
}
}
}
int main() {
std::string text = "abkdfkdfmdfier\nkdfdfkdkf\n";
text.push_back('\0'); // don't use it in a raw string !
text.push_back('\x03');
std::for_each(text.begin(), text.end(), print_escaped);
std::cout << std::endl;
}
你想要的輸出是什麼? – ncm
給我一些時間... – ncm
一切 - 包括\ 0和\ n – user2991252