我想計算字符串的長度,然後複製到另一個字符串不使用C庫函數,但是當我使用fgets()
功能來讀取鍵盤的字符串,代碼沒有顯示實際值長度以及目標字符串。我使用fgets()
函數而不是gets()
,因爲編譯器說gets()
函數是「不推薦使用」的。但是當我將代碼中的sizeof(source)
更改爲整數值時,假設50
代碼正常工作。任何人都可以告訴我這段代碼有什麼問題,爲什麼編譯器會說,gets()
函數已被棄用。與fgets()功能不起作用
這是代碼:
#include <stdio.h>
#include <stdlib.h>
int len(char *source);
char *coppy(char *dest,char *source);
int main (void){
char *source,*dest;
source=(char *)malloc(len(source)+1);
printf("enter string:");
fgets(source,sizeof(source),stdin);
if(source[len(source)-1]=='\n'){
source[len(source)-1]='\0';
}
dest=(char *)malloc(len(source)+1);
coppy(dest,source);
printf("dest=%s\n",dest);
printf("length source=%d\n",len(source));
printf("length dest=%d\n",len(dest));
return 0;
}
int len(char *source){
int i=0;
while(*source!='\0'){
source++;
i++;
}
return i;
}
char *coppy(char *dest,char *source){
while(*source!='\0'){
*dest=*source;
source++;
dest++;
}
*dest='\0';
return dest;
}
這是結果,當運行代碼:
enter string:programming dest=pro length source=3 length dest=3
更正:'fgets()'已經工作了幾十年。這是*你的代碼*使用'fgets'不工作。 –