我正在下面作業的問題:如何從C中的函數返回字符串?
鑑於姓和名作爲參數,寫的 功能
createFBlink()
代碼。這些函數返回一個facebook鏈接 ,它作爲Facebook用戶的備用電子郵件。持有facebook鏈接的變量 應包含存儲表示facebook鏈接的字符串所需的最小字節數 。如果 不是名字或姓氏,則函數返回NULL
。例如,如果
firstname = tzuyu
和lastname = chou
, 的臉書鏈接是[email protected]
。
(查看原始問題陳述here)
我一直在試圖將一個字符串返回從createFBlink
爲main
。我已經嘗試了多種方法,例如將char變成靜態,但我不斷收到我無法理解的錯誤,因爲我沒有很多C的使用經驗。
我使用malloc
,但我遇到了一個問題,其中如果有從我從main發送的函數的參數,我最終會在輸入後崩潰。這裏是我到目前爲止的代碼:
#include <string.h>
#include <conio.h.>
#include <stdio.h>
#include <stdlib.h>
char *createFBlink(char *firstname , char *lastname) ;
int main(void)
{
char firstname[24] , lastname[24], fblink[24] ;
printf("Enter first name: ");
scanf("%s", firstname);
firstname[strlen(firstname)] = '\0';
printf("\n Enter last name: ");
scanf("%s", lastname);
lastname[strlen(lastname)] = '\0';
*fblink = createFBlink(firstname, lastname);
if(*firstname == '\0'){
printf("no facebook link generated");
}else{
printf("%s", *fblink);
}
getch();
return 0;
}
char * createFBlink(char *firstname , char *lastname)
{
int check1 = strlen(firstname) , check2 = strlen(lastname), num = check1+check2;
char link = (char*) malloc(sizeof(char) * num);
if(check1 == 0 || check2 == 0){
*firstname = '\0' ;
}else{
strcat(*lastname, ".");
strcat(*lastname, firstname);
strcat(*lastname, "@facebook.com");
strcpy(link , *lastname);
return link;
}
}
什麼是崩潰?什麼線路導致它? (即使你不明白) –
啓用警告並嘗試重新編譯。 – this
如果你想發佈問題,你至少可以在這裏重新輸入,而不是發佈一個鏈接到你的老師的powerpoint圖片 – dietbacon