簡體   English   中英

如何將fscanf中的char用作int

[英]How to use char from fscanf as int

您好,這可能是一個愚蠢的問題,但我無法弄清楚我的世界! (在c中)

我正在嘗試讀取包含數字和字母的文件,但我只想在編程內容中使用數字。 看起來像這樣:

t1 stuff 12 123 stuff
t1 stuff 12 123 stuff
t1 stuff 12 123 stuff
t2 stuff 12 123 stuff
t2 stuff 12 123 stuff
t3 stuff 12 123 stuff
t4 stuff 12 123 stuff
t4 stuff 12 123 stuff
t4 stuff 12 123 stuff
t33 stuff 12 123 stuff

(它一直執行到t33,我只是從t4跳到t33以避免大名單)

我這樣做的方式是:

Struct name {
char t_numbers
etc..

和:

info(struct name*stuff) {
  FILE *data;
  data= fopen("thefilename", "r");
  int i=0;
  while (fscanf(file, "%s %s %d %d %s\n",stuff[i].t_numbers, etc etc...) == 5)
...

現在,我嘗試先將t_numbers用作int和t%d而不是char,但是由於文件中的“ T”,只能將其作為char然后再作為s%。

問題是,如何將stuff [i] .t_numbers用作int而不是指針? 因此,它使用數字而不是其中的“ T”。

例:

while (k<=10) {
        while (stuff[i].t_numbers==n) {

Will ofc無法正常工作,因為它是一個與int比較的指針。 但是如何使其工作呢? 如何在不使用“ T”的情況下使用這些數據,這樣我就可以做到。

對於這是一個愚蠢的問題還是已經有人問過(到處搜索),我感到非常抱歉。 我對此完全陌生。

(代碼可能會有拼寫錯誤等,因為這只是一個快速草稿而已)

您關於t_numbers不能成為int因為您不能將"T%d"用作格式字符串,這是正確的,但卻具有誤導性; 如果您使用正確的字符串"t%d" ,它就可以正常工作。

根據我的理解,您只需要t1,t2,t3,...中的數字

我有一個簡單的解決方案。 僅當開頭有一個字符時,它才有效。

如下更改代碼以讀取int之前的一個字符。

info(struct name*stuff) {
  FILE *data;
  data= fopen("thefilename", "r");
  int i=0;
  char dummyT = 0;
  while (fscanf(file, "%c%d %s %d %d %s\n",&dummyT, stuff[i].t_numbers, etc etc...) == 5)
info(struct name*stuff) {
FILE *data;
data= fopen("thefilename", "r");
int i=0;
char dummyT = 0;
while (fscanf(file, "%c%d %s %d %d %s\n",&dummyT, stuff[i].t_numbers, etc etc...) ==

不應將文件替換為數據嗎? 另外,您的while循環看起來正在檢查fscanf是否返回5,可能想改為檢查文件是否在末尾,或者如果可能的話,讓計數器循環到33(如果允許的話),如果需要的話,在您的名稱結構中最后要使用%s,您需要將t_numbers設為一個數組,該數組應該可以工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM