求问c语言 fscanf 读txt文件一行多个字符串 最后一个字符串被重复

韩十一 2015-01-05 10:19:49
fscanf读txt文件 一行有多个字符串 字符串之间以空格隔开

File * fp = fopen('1.txt','r');
fscanf(fp,"%s%s%s%s%s",No,Name,Major,Class,Phone);
printf("%s%s%s%s%s",No,Name,Major,Class,Phone);


输出结果有时候会出现
最后一个字符串的值重复 赋值给倒数第二个

如下
读入 123 wyx computer s1 1224324
输出 No = 123 Name = wyx Major= computer Class = s1124324 Phone = 1224324
请问这种情况如何解决
...全文
633 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Const_User 2015-01-07
  • 打赏
  • 举报
回复
在vc++6.0中试过,运行正常
赵4老师 2015-01-06
  • 打赏
  • 举报
回复
因为你没有判断fscanf函数的返回值。
caiwei_cs 2015-01-06
  • 打赏
  • 举报
回复
我也觉得奇怪了。
动力风暴 2015-01-06
  • 打赏
  • 举报
回复
我在vs2010上简单试了一下1楼的程序:

#include <stdio.h>
int main()
{
	char No[20];
	char Name[20];
	char Major[20];
	char Class[20];
	char Phone[20];

	FILE * fp = fopen("search.txt","r");
	if(fp)
	{
		fscanf(fp,"%s%s%s%s%s",No,Name,Major,Class,Phone);
		printf("%s %s %s %s %s\n",No,Name,Major,Class,Phone);
	}
	else
		printf("文件不存在!!");	
	return 0;
}
这个没有写操作,直接给文件“search.txt"里存了一行:123 wyx computer s1 1224324,这样做没出现楼主说的那种情况…… 楼主能不能把你这个练习的完整程序贴出来??我们一块学习~~~
jacksonfan 2015-01-05
  • 打赏
  • 举报
回复

#include <stdio.h>

int main()
{
	char No[20];
	char Name[20];
	char Major[20];
	char Class[20];
	char Phone[20];

	FILE * fp = fopen("search.txt","r");
	fscanf(fp,"%s%s%s%s%s",No,Name,Major,Class,Phone);
	printf("%s %s %s %s %s\n",No,Name,Major,Class,Phone);
	return 0;
}

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧