㈠ 如何給一個c語言字元串轉16進制數的函數
多麻煩啊!
看好了:
#include<stdio.h>
int a;
char *str="1Af";
int main()
{
sscanf(str,"%x",&a);//%x為讀入16進制數,大小寫均可。sscanf是從c字元串中讀入變數。
printf("%i",a);
return 0;
}
㈡ C語言中有沒有把字元轉型化為 浮點型的函數
C語言中將字元串轉型化為浮點型數據的函數有:atof()
和
strtod()
頭文件:
#include <stdlib.h>
函數原型:
double atof (const char* str);
【參數說明】str 為要轉換的字元串。
【函數說明】atof() 函數會掃描參數str字元串,跳過前面的空白字元(例如空格,tab縮進等,可以通過 isspace() 函數來檢測),直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字元串結束時('\0')才結束轉換,並將結果返回。參數str 字元串可包含正負號、小數點或E(e)來表示指數部分,如123. 456 或123e-2。
【返回值】返回轉換後的浮點數;如果字元串 str 不能被轉換為 double,那麼返回 0.0。
double strtod (const char* str, char** endptr);
【參數說明】str 為要轉換的字元串,endstr 為第一個不能轉換的字元的指針。
【函數說明】strtod() 函數會掃描參數str字元串,跳過前面的空白字元(例如空格,tab縮進等,可以通過 isspace() 函數來檢測),直到遇上數字或正負符號才開始做轉換,到出現非數字或字元串結束時('\0')才結束轉換,並將結果返回。參數 str 字元串可包含正負號、小數點或E(e)來表示指數部分。如123. 456 或123e-2。
若endptr 不為NULL,則會將遇到的不符合條件而終止的字元指針由 endptr 傳回;若 endptr 為 NULL,則表示該參數無效,或不使用該參數。
【返回值】返回轉換後的浮點型數;若不能轉換或字元串為空,則返回 0.0。
使用 atof( str ) 與使用 strtod(str, NULL) 結果相同。
一般應用方法為:
char str[]="123.45";
double d=atof(str);
printf("%.2lf", d ); //輸出123.45
㈢ C語言有沒有可以將字元串表達式轉換為數學表達式的函數
C語言中只有將字元串轉換為某種類型數的庫函數,沒有你所說的類似於計算器這種庫函數。
而利用棧和隊列實現你所說計算器功能,作為一個經典演算法在所有「演算法與數據結構」的基礎書籍中都有介紹。
㈣ 給一個C語言字元串轉16進制數的函數
首先對於一個整數,無論是十進制還是十六進制,它的值是一定的。
所以,轉換16進制和10進制原理是一樣的,先求出轉換後的值,然後再以十六進制的形式輸出就行了。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
你不會是直接從網頁裡面復制就粘貼到編輯器裡面吧?
那樣不行的,你自己重新輸入一下。或者先拷貝到文本文檔裡面,再從文本文檔裡面復制。從網頁裡面直接復制有特殊字元的。
還有,程序函數不能在主函數裡面定義的。
#include <stdio.h>
int convert(char * str);
void main()
{
char str[20];
int result;
scanf("%s",str); //自己輸入一個十六進制的串
result = convert(str);
printf("%0x",result);
}
int convert(char * str)
{
int i,sum = 0;
for(i = 0;str[i] != '\0';i++)
{
if(str[i]>='0' && str[i]<='9')
sum += sum*16 + str[i]-'0';
else if(str[i]<='f' && str[i]>='a')
sum += sum*16 + str[i]-'a'+1;
else if(str[i]<='F' && str[i]>='A')
sum += sum*16 + str[i]-'A'+1;
}
return sum;
}
㈤ C語言 字元串反轉函數(不使用庫函數)
char *revstr(char *str, size_t len)
{
char *start = str;
char *end = str + len - 1;
char ch;
if (str != NULL)
{
while (start < end)
{
ch = *start;
*start++ = *end;
*end-- = ch;
}
}
return str;
}
㈥ c語言將字元串轉換為整數的函數
*str是字元串第一個字母的位置,-'0'是得到ASCII碼的偏移量,
比如說字元'9',用'9'-'0'即為9,相當於把字元轉換為整數
*str++是將str向後移,處理字元串中下一個字元
㈦ C語言關於字元串的操作函數有哪些
string.h頭文件中包含的字元串函數
void*memcpy(void*dest,constvoid*src,size_tn);//將n位元組長的內容從一個內存地址復制到另一個地址;如果兩個地址存在重疊,則最終行為未定義
void*memmove(void*dest,constvoid*src,size_tn);//將n位元組長的內容從一個內存地址復制到另一個地址;與memcpy不同的是它可以正確作用於兩個存在重疊的地址
void*memchr(constvoid*s,charc,size_tn);//在從s開始的n個位元組內查找c第一次出現的地址並返回,若未找到則返回NULL
intmemcmp(constvoid*s1,constvoid*s2,size_tn);//對從兩個內存地址開始的n個字元進行比較
void*memset(void*,int,size_t);//用某種位元組內容覆寫一段內存空間
char*strcat(char*dest,constchar*src);//在字元串dest之後連接上src
char*strncat(char*dest,constchar*src,size_tn);//從src截取n個字元連接在字元串dest之後,返回dest字元串
char*strchr(constchar*str,intch);//從字元串str頭開始查找字元ch首次出現的位置
char*strrchr(constchar*str,intch);//從字元串str尾開始查找字元ch首次出現的位置
intstrcmp(constchar*,constchar*);//基於字典順序比較兩個字元串
intstrncmp(constchar*,constchar*,size_t);//基於字典順序比較兩個字元串,最多比較n個位元組
intstrcoll(constchar*,constchar*);//基於當前區域設置的字元順序比較兩個字元串
char*strcpy(char*str1,constchar*str2);//將str2拷貝給str1
char*strncpy(char*str1,constchar*str2,size_tn);//截取str2的n個字元拷貝給str1
char*strerror(int);//返回錯誤碼對應的解釋字元串,參見errno.h(非線程安全函數)
size_tstrlen(constchar*);//返回一個字元串的長度
size_tstrspn(constchar*s,constchar*strCharSet);//從字元串s的起始處開始,尋找第一個不出現在strCharSet中的字元,返回其位置索引值。換句話說,返回從字元串s的起始位置的完全由strCharSet中的字元構成的子串的最大長度。strspn為stringspan的縮寫。不支持多位元組字元集。
size_tstrcspn(constchar*s,constchar*strCharSet);//從字元串s的起始處開始,尋找第一個出現在strCharSet中的字元,返回其位置索引值。換句話說,返回從字元串s的起始位置的完全由不屬於strCharSet中的字元構成的子串的最大長度。strcspn為stringcomplementspan的縮寫。不支持多位元組字元集。
char*strpbrk(constchar*s,constchar*strCharSet);//在字元串s中查找strCharSet中任意字元第一次出現的位置的指針值。strpbrk為stringpointerbreak縮寫。不支持多位元組字元集。
char*strstr(constchar*haystack,constchar*needle);//在字元串haystack中查找字元串needle第一次出現的位置,heystack的長度必須長於needle
char*strtok(char*strToken,constchar*strDelimit);//將一個字元串strToken依據分界符(delimiter)分隔成一系列字元串。此函數非線程安全,且不可重入;但MSVC實現時使用了thread-localstaticvariable因而是線程安全的單仍然是不可重入,即在單線程中不能對兩個源字元串交替調用該函數來分析token,應當對一個字元串分析完成後再處理別的字元串。
size_tstrxfrm(char*dest,constchar*src,size_tn);//根據當前locale轉換一個字元串為strcmp使用的內部格式
㈧ c語言:字元串做為函數參數傳遞
1、值傳遞
void swap(int x,int y)
{ int temp = x;
x = y;
y = temp;
}void main()
{
int a = 10, b = 20;
swap(a, b);
}
執行後,並不會交換。
2、引用傳遞
void swap(int &x,int &y)
{ int temp = x;
x = y;
y = temp;
}void main()
{
int a = 10, b = 20;
swap(a, b);
printf("a=%d b=%d ", a, b);
}
執行後,發生交換。
3、指針傳遞
void swap(int *x,int *y)
{ int temp = *x; *x = *y; *y = temp;
}void main()
{
int a = 10, b = 20;
swap(&a, &b);
printf("a=%d b=%d ", a, b);
}
執行後,發生交換。
參數傳遞只有上面三種,但是如果加上數組,就會產生幾種新形式。
首先,明確數組型變數名本身只是該數組所佔存儲空間的首地址:
int a[3] = { 1, 2, 3 }; int *p = a; //等價於下行 //int *p = &a[0];
printf("%d", *p);
典型的數組做參數。
void fun(char s[]){ for (int i = 0; s[i] != '