這是一個相對簡單的事情,但我一直有問題將字符串從文件分離成多個變量。我用分隔符嘗試了strtok和sscanf,但我似乎做錯了什麼。C字符串解析
#define MAX 40
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
char brd_str[26];
char board[26], Res[26], Ind[26], Cap[26];
int i=0, n=0;
FILE *data;
data = fopen ("C:\\datafile.txt", "rt");
fgets(brd_str, 26, data);
sscanf(brd_str,"%d[^,],%f[^,],%e[^,],%e[^,]", &board, &Res, &Ind, &Cap);
printf("%3d %6d %8e %8e", board, Res, Ind, Cap);
fclose(data);
printf("\nPlease enter something for the program to exit");
scanf("%d", &i);
return(0);
}
字符串本身看起來像這樣2,4.57,2.01e-2,5.00e-8
。在這種情況下逗號將成爲分隔符。當我編譯它時,我確實有很多不正確的數字。
這將不得不進行多次(最多40次),並且變量本身將用於計算。
我輸入的sscanf語句似乎有問題。我不確定問題出在哪裏。
它可以幫助你調試代碼,如果你在fgets()後面打印出'brd_str'。也許它的內容不會是你所期望的? –
我剛剛嘗試過它,它似乎正在顯示字符串,因爲它在文件上。 – user3569350
所以'board'是一個字符串。看起來你正在嘗試sscanf()它與%d?也許你應該用%s來掃描它,然後用%s打印它? –