繁体   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