-1

我有一个包含很多这样的行的文件:

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);
 }
4

1 回答 1

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, ":");
}
于 2012-04-14T16:26:54.080 回答