fscanf读字符串(fscanf()读取中文字符串放进数组)

本文目录
- fscanf()读取中文字符串放进数组
- 怎样用fscanf从文本中读入字符串
- C语言文件读取fscanf(),该怎么处理
- C语言文件怎样读取双引号中的字符串
- C程序,如何从指定文件中读取一个字符串
- fscanf()函数读取的文件内如果是字符串需要加\0吗
- 如何将字符串逐个读取
fscanf()读取中文字符串放进数组
char *s;
然后把p,即:
for(i=0;i《4;i++)
p;
你也可以直接char *p={"李四","张三","黄生","二傻子"};这里数字4只是表示指针数组中指针的个数,而不是字符长度。
怎样用fscanf从文本中读入字符串
同键盘一样的方法,加上输入流参数。
例如:
char s1;
fp = fopen("file.txt","r"); 输入流 是 fp, 文件 是 file.txt
fscanf (fp, "%s %s", s1, s2);
C语言文件读取fscanf(),该怎么处理
fscanf位于头文件《stdio.h》中,函数原型为int fscanf(FILE*stream, constchar*format, ); 其功能为根据数据格式(format)从输入流(stream)中写入数据(argument);与fgets的差别在于:fscanf遇到空格和换行时结束,注意空格时也结束,fgets遇到空格不结束。
函数名: fscanf
功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。
返回值:整型,成功返回读入的参数的个数,失败返回EOF(-1)。
用法:
1int fscanf(FILE*stream,constchar*format,);
FILE *stream:文件指针
char *format:格式字符串
:输入列表
格式字符说明
常用基本参数对照:
%d:读入一个十进制整数.
%i :读入十进制,八进制,十六进制整数,与%d类似,但是在编译时通过数据前置或后置来区分进制,如加入“0x”则是十六进制,加入“0”则为八进制。例如串“031”使用%d时会被算作31,但是使用%i时会算作25.
%u:读入一个无符号十进制整数.
%f %F %g %G : 用来输入实数,可以用小数形式或指数形式输入.
%x %X: 读入十六进制整数.
%o’: 读入八进制整数.
%s : 读入一个字符串,遇空字符‘\0’结束。
%c : 读入一个字符。无法读入空值。空格可以被读入。
附加格式说明字符表修饰符说明
L/l 长度修饰符 输入"长"数据
h 长度修饰符 输入"短"数据
示例说明
如果要求从标准输入中输入一串字符串和一个整型数,那么参数“%s%d”表示什么呢?默认情况下,在终端上(这里假设程序为控制台应用程序)输入第一个参数的值的时候敲下回车,则在第二行输入的为第二个参数值,采用这种输入方法那么格式字符的形式就无关紧要了。
这里要特殊说明的是如果参数在同一行给出,那么格式字符的参数与终端的输入会有什么关系。举个例子:如果格式字符为“%s+%d”,那么参数的输入就应该为 string + integer。
程序例
例一
#include 《stdlib.h》
#include 《stdio.h》
int main(void)
{
int i;
printf("Input an integer:");
/*从标准输入中读取一个整数*/
if(fscanf(stdin, "%d",&i))
printf("The integer read was:%d\n", i);
else
{
fprintf(stderr, "Error reading an integer from stdin.\n");
exit(1);
}
return 0;
}
返回EOF如果读取到文件结尾。
例二
附:MSDN中例子
#include 《stdio.h》
FILE *stream;
int main(void)
{
long l;
float fp;
char s;
char c;
stream = fopen("fscanf.out", "w+");
if(stream==NULL)
printf("The file fscanf.out was not opened\n");
else
{
fprintf(stream,"%s%ld%f%c","a-string", 65000,3.14159, ’x’);
/*将指针设置至文件开头*/
fseek(stream,0L,SEEK_SET);
/*从文件中读取数据*/
fscanf(stream,"%s",s);
fscanf(stream,"%ld",&l);
fscanf(stream,"%f",&fp);
fscanf(stream,"%c",&c);
/*输出读取的数据*/
printf("%s\n",s);
printf("%ld\n",l);
printf("%f\n",fp);
printf("%c\n",c);
fclose(stream);
}
return 0;
}//这样会有意外输出
C语言文件怎样读取双引号中的字符串
可以用文件操作函数fscanf格式读入,只需要读入时,格式写作fscanf(fp,"\"%s\"",s)即可。
1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。
2、例程:
#include《stdio.h》
char b,c;
int main(){
FILE * fp1 = fopen("input.txt", "r");//打开输入文件
FILE * fp2 = fopen("output.txt", "w");//打开输出文件
if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出
puts("不能打开文件!");
rturn 0;
}
fscanf(fp1,"\"%s\"",c);//从输入文件读取一个双引号中的字符串
fprintf(fp2,"%s",c);//向输出文件写入这个字符串
fclose(fp1);//关闭输入文件
fclose(fp2);//关闭输出文件,相当于保存
return 0;
}
C程序,如何从指定文件中读取一个字符串
#include 《stdio.h》
#include 《stdlib.h》
int main()
{
FILE *fp;
char cl;
if((fp=fopen("1.txt","r"))==NULL)
exit(1);
while(fscanf(fp,"%s",cl)==1)
printf("%s \n",cl);
if(fclose(fp)!=0)
exit(1);
return 0;
}
C语言是目前世界上流行、使用最广泛的面向过程的高级程序设计语言。 C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
fscanf()函数读取的文件内如果是字符串需要加\0吗
不需要。
因为输入格式
%d
%s
%s
表明3个数据之间的
分隔符
是
空白
(空格,tab,
新行符...)。
所以
读
i,
读入
0,到空格为止。
读
s1,
读入
question
,到空格为止。
读
s3,
读入
answer
。
s1
和
s2
的
char
内,字符串结尾处,自动添加了\0
追问:
如果用char*呢
追答:
char
*
是指针,没有字符串存储单元。
你要么给它动态分配,要么初始化指向有存储单元的char
变量。
-------------------------------
char
a;
char
*s1=a,*s2=b;
//
初始化
int
i;
FILE
*fp;
fp
=
fopen("abc.txt","r");
fscanf(fp,
"%d
%s
%s",&i,s1,s2);
fclose(fp);
printf("%s\n",a);
printf("%s\n",b);
如何将字符串逐个读取
一般有两种方式 FILE*fp=fopen("文件路径名","打开方式"); 文件路径可以是绝对路径,默认为相对路径 打开方式由于是读入,可以直接写"r" 方法1, char ch;while(!feof(fp))fscanf(fp,"%c",&ch);用fscanf()函数读入 方法2, char ch;while(!feof(

更多文章:
数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)
2026年9月7日 17:00
springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)
2026年9月7日 14:00
display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)
2026年9月7日 11:00
timestamp without time zone(Postgresql中to_date()函数使用问题)
2026年9月7日 09:40




