我有一個 char 陣列s[11]="0123456789";,我希望能夠獲取每個數字s[i](使用 for 回圈)并以某種方式將其轉換為 a char*(我需要一個 char*,特別是因為我需要在其他字串上使用 strncat)
在過去的 4 個小時里,我一直在嘗試這樣做,但我什么也做不了。
uj5u.com熱心網友回復:
除非你愿意臨時修改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?
假設您實際上正在使用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);
}
uj5u.com熱心網友回復:
你的要求沒有任何意義。一個字符是一個小數字。指標是某個記憶體的地址。將字符轉換為指標不會給你一個有效的指標,而是一個一旦使用就會崩潰的指標。
對于 strncat,您需要一個包含 C 字串的字符陣列。您可以通過撰寫 char array[2] 來創建一個字串;(現在你有一個包含兩個字符空間的陣列),然后 array[0] =whateverchar; 陣列[1] = 0; 現在你有一個 C 字串,其中有一個字符和一個尾隨零位元組的空間。
uj5u.com熱心網友回復:
還有一個想法:
#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
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/315668.html
