簡體   English   中英

在 C 中將字符轉換為字符串

[英]Convert Char to String in C

如何在 C 中將字符轉換為字符串。我目前正在使用c = fgetc(fp)<\/code>返回一個字符。 但我需要在 strcpy 中使用一個字符串

"

為了回答這個問題,我沒有讀太多其他內容

char str[2] = "\0"; /* gives {\0, \0} */
str[0] = fgetc(fp);

您可以在循環中使用第二行,使用char作為字符串來保留其他字符串操作。

使用fgetc(fp)只能調用strcpy(buffer,c); 似乎不對。

您可以自己構建此緩沖區:

char buffer[MAX_SIZE_OF_MY_BUFFER];

int i = 0;
char ch;
while (i < MAX_SIZE_OF_MY_BUFFER - 1 && (ch = fgetc(fp)) != EOF) {
    buffer[i++] = ch;
}
buffer[i] = '\0';  // terminating character

請注意,這取決於您將讀取少於MAX_SIZE_OF_MY_BUFFER字符的事實

您可以執行許多給定的答案,但如果您只是想將其與strcpy一起使用,那么您可以執行以下操作:

...
    strcpy( ... , (char[2]) { (char) c, '\0' } );
...

(char[2]) { (char) c, '\\0' }部分將暫時從字符c生成以null結尾的字符串。

通過這種方式,您可以避免為手中已有的東西創建新變量,前提是您只需要一次單字符串

像這樣的代碼應該工作:

int i = 0;
char string[256], c;
while(i < 256 - 1 && (c = fgetc(fp) != EOF)) //Keep space for the final \0
{
    string[i++] = c;
}
string[i] = '\0';

我用它來將char轉換為字符串(例子):

char c = 'A';
char str1[2] = {c , '\0'};
char str2[5] = "";
strcpy(str2,str1);
//example
char character;//to be scanned
char merge[2];// this is just temporary array to merge with      
merge[0] = character;
merge[1] = '\0';
//now you have changed it into a string

這是一個古老的問題,但我認為沒有一個答案真的符合OP的問題。 他想要/需要做的就是:

char c = std::fgetc(fp);
std::strcpy(buffer, &c);

這里的相關方面是這樣的事實,即strcpy()的第二個參數不需要是char數組/ c-string。 實際上,根本沒有參數是char或char數組。 它們都是char指針:

strcpy(char* dest, const char* src);

dest :非const char指針
它的值必須是可寫char數組元素的內存地址(之后至少還有一個元素)。
src :一個const char指針
它的值可以是單個char的地址,也可以是char數組中的元素的地址。 該數組必須在其余元素(從src開始)中包含特殊字符\\0 ,以標記應復制的c字符串的結尾。

這是一個有效的例子:

printf("-%s-", (char[2]){'A', 0});

這將顯示-A-

僅供你在C中使用字符串數據類型。使用字符數組來存儲值並對其進行操作。 將變量c更改為字符數組,並在循環內使用它來獲取值。

char c[10];
int i=0;
while(i!=10)
{
    c[i]=fgetc(fp);
    i++;
}

另一種方法是使用指針並動態分配內存並分配值。

C\/C++ 方便的數據類型交換函數。 在這個 repo 中有所有 c++ 數據類型的便利函數,我把它們都寫在 python 中。

使用這個回購:

https:\/\/github.com\/azizovrafael\/Simple-CPlusPlus<\/a>

例子:

...

int main(){
   int n = INT(INPUT("Write Some Text For Console Ex. (Enter: )"));
   string str = STR(n);
 
   return 0;
}

...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM