我有一个包含很多这样的行的文件:
1:458:187:131
1:1124:384:63
1:2300:514:31
2:95:111:12
...
在每次阅读时我都使用一个函数来使用这些值,这样在下一次迭代中它就可以存储在同一个变量中。
然后我还有其他字符串
6:City1:46:795:825:17134:8398:616:323:8791:5873
7:City near London:507:1032
8:NY:2595:64:193:684:1258:341:1125:1956:5079
这与以前的过程相同。有什么帮助吗?
void readst()
{
int nn1, nn2,nn3,nn4;
char str1[200], str2[200];
char str[200];
FILE *fp;
fp = fopen("file.txt", "r");
if(!fp) return 1; // bail out if file not found
while(fgets(str,sizeof(str),fp) != NULL)
{
// strip trailing '\n' if it exists
int len = strlen(str)-1;
if(str[len] == '\n')
str[len] = 0;
int n1, n2,n3,n4;
char str1[200], str2[200];
sscanf(str,"%d:%d:%d:%d",&nn1,&nn2,&nn3,&nn4);
printf("%d\n%d\n%d\n%d\n",nn1,nn2,nn3,nn4);
printf("\n%s", str);
}
fclose(fp);
}
答案 0 :(得分:1)
这样的事情应该做到这一点:
#include <stdio.h>
int main (void) {
static const char filename[] = "file.txt";
FILE *file = fopen ( filename, "r" );
if (file != NULL) {
char line [128];
while (fgets(line, sizeof line, file) != NULL) {
fputs(line, stdout);
}
fclose(file);
}
else {
perror(filename);
}
return 0;
}
您可以在while循环中操作变量。
拆分字符串:
p = strtok("a:b:c", ":");
while (p != NULL) {
printf("%s\n", p);
p = strtok(NULL, ":");
}