2017-09-14 82 views
-2
#include <stdio.h> 

#include <stdlib.h> 

static void get_string(char *ac) 
{ 
    ac = (char *)malloc (1 * sizeof (char)); 
    printf("Enter the string to count vowels and consonants in a string using pointers: "); 
    scanf("%s", ac); 
} 

main(int argc, char *argv[]) 
{ 
    char *ac = NULL; 
    get_string(ac); 
    printf("The Entered string is:%s", ac); 
    for(;;); 
} 

無法從函數堆棧中獲取輸入的字符串。返回null.Can任何人都可以幫助我進行調試?無法從函數堆棧中獲取輸入的字符串

+0

如果您只爲** 1 **字符分配空間,那麼您希望得到的字符串究竟是什麼? – StoryTeller

回答

1

C中的函數參數是按值傳遞的。對被調用函數內部的參數所做的任何更改都不會反映到函數調用中提供的實際參數。

在你的情況,你改變ac本身(而不是它所指向的內存位置的內容),因此,這將需要一個指針-TO-ac

這就是說,

+0

那麼我需要在代碼中進行哪些修改? – jiju

+0

爲你的輸入malloc一個合理的長度,(256,說),在你的scanf()格式的字符串中使用[length-1]的寬度,然後從char_string()返回字符串作爲char *或者使用double - 指針參數/參數允許分配的指針傳回給調用者。最簡單的就是返回它。 –

+0

哦 - 並在main()中打印後釋放()char *。 –