当前位置:首页 » 编程语言 » 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[]就是所求得的数组。