当前位置:首页 » 编程语言 » c语言fput
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言fput

发布时间: 2022-06-14 05:54:29

c语言中fputs遇到空字符停止输出所以字符

c语言中输出字符串的函数有printf("%s") puts() fputs()等,字符串中可以是任意的字符,包括空格在内,无特殊处理,如: char str[]="hello world" ;printf("%s\n", str );puts(str);fputs(str,stdin); 但在输入带有空格的字符串时,只能用gets()或fgets(),而不能用scanf("%s") ,因为scanf("%s")输入字符串时,遇到空格就结束了输入。而gets()函数是以回车为结束符的输入函数,可以输入带空格的字符串。

❷ c语言fputs函数问题

fputs是一种函数,具有的功能是向指定的文件写入一个字符串(不自动写入字符串结束标记符'\0')。成功写入一个字符串后,文件的位置指针会自动后移,函数返回为一个非负整数;否则返回EOF(符号常量,其值为-1)。

❸ c语言中fgets 、fputs、fread、fscanf、fseek的区别和作用

fread:是读取数据
fwrite:是写入数据
1.函数功能
用来读写一个数据块。
2.一般调用形式
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
3.说明
(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
(2)size:要读写的字节数;
(3)count:要进行读写多少个size字节的数据项;
(4)fp:文件型指针。
注意:1
完成次写操(fwrite())作后必须关闭流(fclose());
2
完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(file
*
fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出;
3
fprintf()

按格式输入到流,其原型是int
fprintf(file
*stream,
const
char
*format[,
argument,
...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。注意的是返回值为此次操作写入到文件的字节数。如int
c
=
fprintf(fp,
"%s
%s
%d
%f",
str1,str2,
a,
b)
;str1:10字节;str2:
10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。
4.fscanf

scanf
相似
:当能正常读入数据时,
fscanf
返回读入数据的个数,否则返回
eof

❹ C语言文件操作fputs用法问题

把写文件代码全弄上来才能知道哪里错了。看样子buf应该是二维数组,那么写一行应该是fputs(buf[x],fptr);这样的格式,其中x是数组行下标。以上只是猜测,不见得说得一定准确。

❺ c语言使用fputs函数写入无效

文件指针的问题,一般来说,同时读写一个文件并不可取。硬要如此的话,使用fseek定位好写入位置后再写入

❻ C语言中fgets和fputs的问题......

//原因是:你似乎对feof有一定的误解

//当IO流读到文件最后一个字符的时候是不会设置EOF位的

//这时调用feof,会返回false

//EOF设置当且仅当读取完最后一个字符后,再继续读取,这时相当于调用fgetc()
//获取不存在的字符,返回EOF,设置EOF位置

//然后调用feof,会返回true

//理论上的fgets工作原理

char*fgets(constchar*str,intnum,FILE*fp)
{
if(str==NULL||num<=0||fp==NULL)
returnNULL;

size_tindex=0;
intch;

while(index<num-1)
{
ch=getc(fp);
if(ch==EOF)
{
if(index==0)
returnNULL;
break;
}
else
{
str[index++]=ch;
if(ch==' ')
break;
}
}
str[index]='';
returnstr;
}

当你是以 结尾的行时,fgets默认输入结束,它并不知道这个是最后一行
也就是没有设置EOF

当再次用fgets读取时,由于再读入任何数据之前,遇见了EOF,所以它立即返回,并且
没有修改str

然后你就又输出了一行

以下是fgets函数说明

char * fgets ( char * str, int num, FILE * stream );

Get string from stream

Reads characters fromstreamand stores them as a C string intostruntil (num-1) characters have been read or either a newline or theend-of-fileis reached, whichever happens first.

A newline character makesfgetsstop reading, but it is considered a valid character by the function and included in the string copied tostr.

A terminating null character is automatically appended after the characters copied tostr.

Notice thatfgetsis quite different fromgets: not onlyfgetsaccepts astreamargument, but also allows to specify the maximum size ofstrand includes in the string any ending newline character.

Parameters

  • str

  • Pointer to an array ofchars where the string read is copied.

  • num

  • Maximum number of characters to be copied intostr(including the terminating null-character).

  • stream

  • Pointer to aFILEobject that identifies an input stream.
    stdincan be used as argument to read from thestandard input.

Return Value

On success, the function returnsstr.
If theend-of-fileis encountered while attempting to read a character, theeof indicatoris set (feof). If this happens before any characters could be read, the pointer returned is a null pointer (and the contents ofstrremain unchanged).
If a read error occurs, theerror indicator(ferror) is set and a null pointer is also returned (but the contents pointed bystrmay have changed).

❼ C语言对文件操作,用fputs函数不能把字符串写入文件

读写一个字符数据

经过前面的学习,我们学习了fread()、fwrite()函数的操作,这两个函数都是对一段“内存块”进行读写操作。那么,C语言还提供了fgetc()、fputc()函数,对文件中的一个字符进行读写操作。这些函数的定义如下:

int fgetc(FILE *stream);

函数说明:从stream文件指针所指向的文件读取1个字符,通过函数的返回值返回。例如:

char c = fgetc(fp);

就是从fp指向的文件,读取1个字符的数据,通过函数返回值,设置给字符变量c。

int fputc(int c, FILE *stream);

函数说明:把参数c表示的字符,写入stream文件指针所指向的文件。例如:

char c = 'M';

fputc(c, fp);

就是把参数c表示的字符变量,写入文件指针fp指向的文件。如下是一个程序测试例子:

可以看到,新建一个test.txt文件,调用fputc()函数,把一个字符写入到文件中。然后,再重新打开文件,读取文件的数据,调用fgetc()函数读取一个字符,得到的数据是刚刚写入的字符。所以,通过这个例子,我们学习了fgetc()、fputc()函数的操作,对文件进行一个字符的读写操作。

3.5 读写一行字符数据

C语言提供了fgets()、fputs()函数对文件进行读写“一行”的数据,字符串以'\n'字符换行,注意,所谓的“一行”数据,它的最后一个有效字符是’\n’,表示换行符号。字符串的结束符,还是以’\0’为结尾,表示字符串结束符。其中fgets()函数的定义如下:

char *fgets(char *buf, int size, FILE *stream);

函数说明:从stream函数指针所指向的文件中,读取size-1个字节到buf缓存,不是读取size个字节,因为,buf[ ]缓存的第size个字节存放字符串结束符,形成一个有效的字符串。

当读取到换行符时,或者到达文件末尾时,结束文件的读取操作。

返回值:读取数据成功,返回存储数据的缓存地址,就是参数buf的地址。如果读取数据失败,返回NULL。例如,读取文件完,没有数据可以再读取,则返回NULL。

int fputs(const char *buf, FILE *stream);

函数说明:把参数buf指针指向的字符串,写入到stream指向的文件。参数buf是一个字符串指针,必须指向一个合法的字符串。合法的字符串是以字符串结束符'\0'结束,表示一个字符串的结尾。

返回值:写入数据成功,返回成功写入的字符个数。失败返回EOF标记。

如下是一个程序测试例子:

程序运行结果如下:

可以看到,程序调用fputs()函数,往打开的test.txt文件写入数据。直接写入一个字符串。然后,关闭文件,再重新打开文件。调用fgets()函数读取数据,读取数据的时候,遇到回车换行的字符'\n',表示一行数据,那么,就返回读取到的一行数据。

在实际的项目开发过程中,fgets()函数非常有用。例如,我们定义一个config.txt文件,里面存放一些系统的配置信息,文件的格式如下:

cat /etc/config.txt

sys_pwd=123456

ApCliAuthMode=WPA2PSK

ApCliEncrypType=AES

ApCliChannel=1

ApCliDefaultKeyID=1

那么,文件的配置信息是一行一行数据,所以,可以用fgets()函数,快速读取出每一行系统配置信息。

❽ C语言fputs()函数问题

scanf("%s", &ch); 这个函数问题

改成
gets(ch); 再试试

❾ C语言 ,fgets和fputs函数的操作

看来你对fgets这个函数还不太了解。
它的原型是char *fgets(char *s, int n, FILE *stream);
它从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。
你这里是n是2,当然读取一个字符了。

❿ C语言fputs的简单问题,有提示,答案对,立刻采纳,绝不拖延

fputs的第一个参数是const char *,但是你传入了一个struct aa *,所以出现这个警告。
消除警告的方法:
改成:fputs((char *)ff,w);

但是即使这么改了,我估计还是要出错。因为里面有些奇怪的东西,不知道是你故意这么写的还是你不小心弄错了。我就不复制你所有的代码了,你自己对照下想想看:
struct aa
{
char name[10][10]; // 看来你这里aa表示一个人,那么为什么一个人需要10个名字?推荐改正:char name[10];
char sex[10];
int cj;
int number;
}

scanf("%s",boy[i].name[i]); // 推荐改正:scanf("%s",boy[i].name);
fputs(ff,w); // 推荐改正:fputs((*ff).name, w);

这三个地方要改必须全改,只改一个地方会出错。