C特殊字元串編譯
1. 用c或c++怎樣處理帶有特殊字元的字元串 例如:string="daff/a" 怎樣讓其輸出
斜杠變雙斜杠就好。再說『/』也不是特殊字元,『\』才是,要打出「\」就換成「\\」,要實在不行就' '內加上ASCII碼
2. 怎麼用C語言把字元串形式的C代碼解析成C語言並編譯執行
恐怕不能吧,問題是程序運行的時候,動態載入字元串進行解析運行,這個是運行時的,而C語言是預編譯語言,也就是通過源代碼編譯成二進制的binary來執行的,無法動態載入吧
3. 用c 定義一個 特殊 字元串謝謝了,大神幫忙啊
unsigned char buffer[]={0x7e,0x11,0x1c,0x60,0xfe} unsigned char luanma[]={0x7e,0x0f} 應該可以 吧
4. C轉義字元及編譯原理
.2f的意思就是控制輸出的精度,指顯示兩位小數
不能加strlen是因為這個是字元串的操作,你要加string.h的頭文件
(Q)這個用法我沒用過,由於現在沒用自己的電腦,看不到stdio.h的具體內容,不知道printf的函數實現,不過你可以打開stdio.h這個文件,就可以看到函數的實現,相信就比較好理解了,當然你要保證(q)這樣的用法是正確的
5. C中字元串的幾種定義方法及說明
在C中定義字元串有下列幾種形式:字元串常量,char數組,char指針
1.字元串常量
即:位於一對雙括弧中的任何字元。雙引號里的字元加上編譯器自動提供的結束標志\0字元,作為
一個字元串存儲在內存中。如:printf("%s","hello"); //"hello"
如果字元串文字中間沒有間隔或間隔的是空格符,ANSI C 會將其串聯起來。例:
char greeting[50] = "hello,and" "how are" "you";
等價於:
char greeting[50] = "hello,and how are you";
字元串常量屬於靜態存儲類。靜態存儲是指如果在一個函數中使用字元串常量,即使是多次調用了這個函數,
該字元串在程序的整個運行過程中只存儲一份。整個引號的內容作為指向該字元串存儲位置的指針。這一點與
把數組名作為指向數組存儲位置的指針類似。
2.字元串數組及其初始化
初始化例子:
char m[40] = "hello,world"; //定義字元串數組時必須指定數組大小(整型常量),在指定大小時,要確保數組的大小比預定的大一個,因為編譯器會自動添加'\0'。
//多餘的元素會初始化為'\0'
char m={'h','e','l','\0'}; //注意標志結束的空字元,若沒有它,得到的只是一個字元數組而不是字元串
3.利用char指針定義字元串
char *m = "hello,world"; //自動添加'\0'
注意:此時字元串指針m指向字元串常量,不成用*(m+1)='o'修改此常量,因為這個字元串常量放在常量區不能被修改
4.數組和指針
數組形式和指針形式有什麼不同呢?
數組形式: char m[40] = "hello,world";
指針形式: char *m = "hello,world";
數組形式:
編譯器會把數組名m看作是數組首元素的地址&m[0]的同義詞,m是個地址常量。可以用m+1來標識數組里的下一個元素,但不能使用++m,增量運算符只能在變數前使用, 而不能在常量前使用。
m[40]在計算機內存中被分配一個有40個元素的數組(其中每個元素對應一個字元,還有一個附加的元素對應結束的空字元'\0')。每個元素都被初始化為相應的字元。
通常,被引用的字元串存儲在可執行文件的數據段部分;當程序被載入到內存中時,字元串也被載入到內存中,把被引用的字元串復制到數組中
指針形式:
指針形式(*m)也會在靜態存儲區為字元串預留空間。此外,一旦程序開始執行,還要為指針變數m另外預留一個存儲位置,以在該指針變數中能夠存儲字元串的地址。
m指向字元串的第一個字元,可用++m指向第二個字元。 指針m是個變數。
6. 編譯 字元轉義 C語言
#define A B所做的就是把源文件中B所出現的地方,用A完整的代替;
在你這里#define catcaine ;當然能夠通過;而#define catcaine 『\73』完全不能通過;
比如對於下面一個片段
int a;
char b;
使用#define catcaine ;
int a catcaine
int b catcaine編譯的時候,編譯器會自動吧catcaine替換為;和原來一樣,所以是正確的
使用#define catcaine 『\73』
int a catcaine
int b catcaine編譯後,會替換為
int a '\73'
int b '\73'這當然不能通過
7. C語言字元串列印出現特殊字元是怎麼回事請問如何解決這個問題
這是由於代碼頁不同的緣故,要把代碼頁切換到英文格式,才能顯示擴展ASCII碼,否則,編譯系統會把它當作,漢字來顯示,就出現了右圖中的「怪漢字」。但是,這種情況下卻是不能顯示漢字的(在貼出的程序中特意「企圖」顯示一行中文信息,觀察它的顯示情況,然後把system("chcp 437 > nul");一行注釋或刪除後再次編譯、運行比較再次運行的不同結果),所以,在結束程序之前,再換回到原來的顯示漢字狀態(system("chcp 936 > nul");)
#include
#include
int main()
{ char a=176,b=219;
system("chcp 437 > nul");
printf("%c%c%c%c%c
",b,a,a,a,b);
printf("%c%c%c%c%c
",a,b,a,b,a);
printf("%c%c%c%c%c
",a,a,b,a,a);
printf("%c%c%c%c%c
",a,b,a,b,a);
printf("%c%c%c%c%c
",b,a,a,a,b);
printf("
歡迎使用C語言編程!
");
system("pause");
system("chcp 936 > nul");
return 0;
}
8. 麻煩誰幫我解釋下 C語言程序 關於文件查找特殊字元串
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
//三個頭文件,分別表示標准化io,標准化庫文件,字元串類文件的頭文件
int
main()
{
int
line=0;//記錄行數
FILE
*fp;//定義文件指針
char
FILENAME[100],li[256],indata[255],*sust=NULL;//
printf("Input
file
name
please:");
gets(FILENAME);//獲取文件名
if
((fp=fopen(FILENAME,"r"))!=NULL){//如果讀取成功,即fopen函數返回值不為空
printf("Input
a
string
please:");
gets(indata);//輸入要尋找的那個字元串
while
(!feof(fp))//當文件未結束一直執行該操作
{
line++;//行計數加一
fgets(li,255,fp);//讀取255個字元
sust=strstr(li,indata);//從字元串li中尋找indata第一次出現的位置(不比較結束符NULL)。參看//http://ke..com/view/745156.htm?fr=ala0
if
(sust!=NULL)
{//如果未找到
printf("Found
it
in
line
%d\n",line);
}
}
fclose(fp);//關閉文件
}
else
puts("File
not
found!");//文件未找到
return
0;
}