C:从文件中读取数字和字符串
我必须从txt文件中读取数据,如下所示:C:从文件中读取数字和字符串,c,file-io,input,C,File Io,Input,我必须从txt文件中读取数据,如下所示: 11 27 12 OY-5158 11 28 12 WM-2037 12 29 46 PY-6651 最后一部分必须在字符串中,它始终有7个字符 我试过这个: #include <stdio.h> #include <stdlib.h> int main() { int i; int sorok; char s[1000]; //Max number of lines FILE *f =
- 11 27 12 OY-5158
- 11 28 12 WM-2037
- 12 29 46 PY-6651
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
int sorok;
char s[1000]; //Max number of lines
FILE *f = fopen("jarmu.txt","r");
while( (fgets(s, sizeof(s), f)) != NULL) {
sorok++;
}
int idopont[sorok][3];
char rendszam[sorok][7];
while (!feof(f))
{
for(i=0; i<sorok; i++)
fscanf(f,"%d %d %d %7s",&idopont[i][0],&idopont[i][1],&idopont[i][2],&rendszam[i]);
}
for(i=0; i<sorok; i++)
printf("%d %d %d %7s\n",idopont[i][0],idopont[i][1],idopont[i][2],rendszam[i]);
return 0;
}
#包括
#包括
int main()
{
int i;
int sorok;
char s[1000];//最大行数
文件*f=fopen(“jarmu.txt”、“r”);
while((fgets,sizeof,f))!=NULL){
sorok++;
}
int idopont[sorok][3];
char rendszam[sorok][7];
而(!feof(f))
{
对于(i=0;i而言,您的问题很简单:
此时,您只需读取一次文件以获取行数,然后再次解析这些行。您忘记了在两行之间倒带。使用:fseek(f,0,SEEK_SET);
另外,不要忘记删除while(!feof(f))
循环包含体
或者,只读取一次文件并直接解析行
下一个问题点:C使用以0结尾的字符串,您没有为以0结尾的字符串保留空间。请也更正此问题
最后一个错误:fscanf(f,“%d%d%d%7s”、&idopont[i][0]、&idopont[i][1]、&idopont[i][2]、&rendszam[i]);
应该是fscanf(f,“%d%d%d%7s”、&idopont[i][0]、&idopont[i][1]、&idopont[i][2]、rendszam[i]);
:
类型应该是FILE*、char*、int*、int*、int*、char*
。最后一个类型是char**
请定义“不起作用”的含义。char rendszam[sorok][7];
-->char rendszam[sorok][8];
,&rendszam[i]
rendszam[i]
,并且,不要使用!eof(f)
我这样做了,程序运行了,但在它写入数据之后,它会写入一些有趣的东西。这是exe编写的文本的结尾:如果&rendszam[I]->rendszam[I]是那样的话,我已经尝试过了,因为BLUEPIXY的注释,但它没有帮助。程序也会这样做。rendszam[sorok][7+1]
建议回放(f);
而不是fseek(f,0,SEEK\u SET)
。我终于找到了它!int-sorok->int-sorok=0:D谢谢大家:)