我是 C 的新手,我正在嘗試做一些函式來反轉一個單詞,這里是我的代碼:
#include <stdlib.h>
#include <string.h>
// ? to revers the word
void lettreCount(char *saisi, int length){
int i, j = 0;
char revers[length];
for (i = length; i >= 0; --i){ //loop
*(revers j) = saisi[i];
j;
}
printf("%s\n",revers);
}
int main(){
char text[30]; //Array for text
int len;
printf("Saisissez le text:\n");
gets(text);
len = strlen(text);
lettreCount(text, len);
}
但是我一直在終端中得到一個空字串,我應該怎么做?謝謝
uj5u.com熱心網友回復:
C 中的字串以空位元組終止。因此,當您使用i = length放入新陣列的第一個字符開始回圈時,就是空位元組。這意味著您有一個空字串。
在索引處開始回圈,length-1以便從字串的最后一個字符開始。然后在回圈之后,您需要手動將終止的空位元組添加到目標陣列。
char revers[length 1];
for (i = length-1; i >= 0; --i){ //loop
*(revers j) = saisi[i];
j;
}
revers[length] = 0;
uj5u.com熱心網友回復:
您是否將所有功能命名為lettreCount獨立于它們正在做什么?:)
指向整數轉換 strchr 的不兼容指標
如果字串s包含length字符(函式回傳的值strlen),則運算式s[length]產生終止零字符'\0'。在第一次迭代中,終止零字符被寫入此 for 回圈中的新字串的第一個字符
for (i = length; i >= 0; --i){ //loop
*(revers j) = saisi[i];
j;
}
結果,目標陣列包含一個空字串。
創建給定字串的反轉字串的函式可以通過以下方式宣告和定義
char * copy_reverse( const char *s )
{
size_t n = strlen( s );
char *reversed = malloc( n 1 );
if ( reversed != NULL )
{
reversed[n] = '\0';
for ( char *p = reversed n; *s; s )
{
*--p = *s;
}
}
return reversed;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406063.html
標籤:
上一篇:讀取包含不同型別的格式化檔案
