[英]cast a char into a char* in C
我有一個字符數組s[11]="0123456789";
並且我希望能夠獲取每個數字s[i]
(使用 for 循環)並以某種方式將其轉換為char*
(我需要一個 char*,特別是因為我需要在其他字符串上使用 strncat)
在過去的 4 個小時里,我一直在嘗試這樣做,但我什么也做不了。
除非您願意暫時修改s
,或將角色復制到其他地方……否則您會遇到困難。
s
。int main() {
char s[11] = "0123456789";
for (int i = 0; i < strlen(s); i++) {
// Modify s in place.
const char tmp = s[i+1];
s[i+1] = '\0';
char *substr = &s[i];
// Do something with substr.
printf("%s\n", substr);
// Fix s
s[i+1] = tmp;
}
}
s[i]
復制到一個新字符串。int main() {
char s[11] = "0123456789";
for (int i = 0; i < strlen(s); i++) {
// Create a temporary string
char substr[2];
substr[0] = s[i];
substr[1] = '\0';
// Do something with substr.
printf("%s\n", substr);
}
}
假設您實際上正在使用strncat
或類似的...這些功能非常簡單,尤其是當您僅附加一個字符時。 您可能只是創建自己的版本。
void append_character(char *buffer, int buffer_size, char new_character) {
int length = strlen(buffer);
if (length + 2 < buffer_size) {
buffer[length] = new_character;
buffer[length+1] = '\0';
} else {
// No space for an additional character, drop it like strncat would.
}
}
或者你可以將它作為一個簡單的 strncat 包裝器來完成:
void append_character(char *buffer, int buffer_size, char new_character) {
char new_string[2] = { new_character, '\0' };
strncat(buffer, buffer_size, new_string);
}
你的要求沒有任何意義。 一個字符是一個小數字。 指針是某個內存的地址。 將字符轉換為指針不會給你一個有效的指針,而是一個一旦使用就會崩潰的指針。
對於 strncat,您需要一個包含 C 字符串的字符數組。 您可以通過編寫 char array[2] 來創建一個字符串; (現在你有一個包含兩個字符空間的數組),然后 array[0] = whatchar; 數組[1] = 0; 現在你有一個 C 字符串,其中有一個字符和一個尾隨零字節的空間。
還有一個想法:
#include <stdio.h>
#include <string.h>
int main(void)
{
char src[11]="0123456789";
char dest[50]="abc";
char* p = src;
int i = 0;
int len = strlen(src);
for (i = 0; i < len; i++)
{
strncat(dest,p,1);
p++;
}
printf("src: %s\n", src);
printf("dest: %s\n", dest);
return 0;
}
在Ubuntu下用gcc編譯:
$ gcc hello_str.c -o hello_str
輸出:
$ ./hello_str
src: 0123456789
dest: abc0123456789
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.