當前位置:首頁 » 編程語言 » c語言getstring函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言getstring函數

發布時間: 2022-07-24 04:56:39

A. c語言,返回字元串形式的函數

#include <stdio.h>
char *getString(char a[] ) //這里有錯
{
gets(a); //這里我用gets(a);
return a;
}
int main()
{
char a[10],*p; //這里一個指針變數來接受返回的地址
p=getString(a);
puts(p);//這里我用puts(a);
}
可以運行

B. c語言,gets函數的詳細用法

c語言,gets()函數用來從標准輸入設備(鍵盤)讀取字元串直到換行符結束,但換行符會被丟棄,然後在末尾添加''字元。其調用格式為:gets(s)。其中s為字元串變數(字元串數組名或字元串指針)。如果為單個字元指針,編譯連接不會有錯誤,但運行後內存溢出錯誤。

(2)c語言getstring函數擴展閱讀:

gets(s)函數與scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函數輸入字元串時存在一個問題,就是如果輸入了空格會認為字元串結束,空格後的字元將作為下一個輸入項處理,但gets()函數將接收輸入的整個字元串直到遇到換行為止。

gets(s)函數可以無限讀取,不會判斷上限,以回車結束讀取,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。

C. C語言函數問題

#include<stdio.h>
#include<string.h>

#defineMAXS10

voidShift(chars[]);

voidGetString(chars[]);/*實現細節在此不表*/

intmain()
{
chars[MAXS];

GetString(s);
Shift(s);
printf("%s ",s);

return0;
}

//下面是修改過的答案及原因

voidGetString(chars[])
{
scanf("%s",s);
return;//void也寫上return比較好
}

voidShift(chars[])
{
inti,t,d=0,e;
chara[100],b[100],c[100];
memset(a,0,sizeof(a));//abc數組都沒有初始化,裡面的數據不能保證是正常的
memset(b,0,sizeof(b));//可能在你的電腦上數據正常,放在評測機上就錯了
memset(c,0,sizeof(c));
e=strlen(s);
for(i=0;i<e;i++){
if(i<=2){
a[i]=s[i];
}
if(i>2){
b[d]=s[i];
d++;
}
}
d=0;
t=strlen(b);
for(i=0;i<e;i++){
if(i<t){
s[i]=b[i];
//c[i]=b[i];
}
if(i>=t){
s[i]=a[d];
//c[i]=a[d];
d++;
}
}
// puts(c);
return;//void也寫上return比較好
}

D. c語言函數返回地址

1、函數直接返回一個指針類型即返回地址。
2、C語言屬於高級編程語言。在C語言中一個函數不能返回局部地址即指針。
例:
int * func(void)

int a= 10;
int *p = &a;
return p;

a變數的區域是func()函數,在函數內有效,出了函數就釋放了,此時p指向的是一個未知
地址,屬於錯誤用法。
正確用法:
int *p = NULL;
int * func(void)

p = malloc(sizeof(int));
if(p!=NULL)
{
*p = 10;
}
return p;

E. c語言函數如何返回字元串,該函數又該如何調用呢

無法返回字元串,只能返回字元串的首地址。如:char *p = GetString(); 返回的字元串空間必須是開辟在堆上的,不能是棧,如果是棧當函數結束時,數據也會銷毀的;

F. C語言字元串gets(str)

在scanf("%c",&ch);之後加上getchar();

#include<stdio.h>

int main(void)

printf("Input a character: ");

scanf("%c",&ch);

fflush(stdin);//加上這句,清掉輸入字元後,你再輸入的回車符

printf("Input a string: ");

char str[80];

gets(str);

printf("%c ",ch);

puts(str);

return 0;

}


字元串

因為本函數可以無限讀取,易發生溢出。如果溢出,多出來的字元將被寫入到堆棧中,這就覆蓋了堆棧原先的內容,破壞一個或多個不相關變數的值。

這個事實導致gets函數只適用於玩具程序,為了避免這種情況,可以用fgets(stdin) (fgets實際上可以讀取標准輸入,即大多數情況下的鍵盤輸入),具體參閱fgets詞條)來替換gets()。在V7的手冊中說明:為了向後兼容,gets刪除換行符,gets並不將換行符存入緩沖區。

以上內容參考:網路-gets

G. c語言輸入輸出字元串自定義函數該怎麼寫啊

自定義函數時字元串的格式:char *function(); char *function(char ch[]) { return ch; } main { char c[]={"ABCDEFG"}; printf("%s",function(c)); }

H. C語言中如何調用一個函數輸入字元串.這個函數怎麼寫

#include <string.h>
#include <stdio.h>
main()
{char a[100];
gets(a);
printf("%s\n",a);
}
gets()函數用來從標准輸入設備(鍵盤)讀取字元串直到換行符結束,但換行符會被丟棄,然後在末尾添加'\0'字元。其調用格式為: gets(s); 其中s為字元串變數(字元串數組名或字元串指針)。 gets(s)函數與scanf("%s:",&s)/* scanf("%s",s) */相似,但不完全相同,使用scanf("%s",&s);函數輸入字元串時存在一個問題,就是如果輸入了空格會認為字元串結束,空格後的字元將作為下一個輸入項處理,但gets()函數將接收輸入的整個字元串直到遇到換行為止。
要函數就這樣:
#include <string.h>
#include <stdio.h>
void sr(char *a)
{ gets(a);
}
main()
{char a[100];
sr(a);
printf("%s\n",a);
}
哦哦O(∩_∩)O^_^

I. 如何用C語言實現動態的字元串數組

思想:用strlen獲得s的長度n,定義一個臨時的字元數組temp[],用循環實現把temp[0]=s[n],temp[1]=s[n-1]……
temp[]就是所求得的數組。