如何将fscanf中的char用作int

如何将fscanf中的char用作int,c,computer-science,scanf,C,Computer Science,Scanf,你好,这可能是一个愚蠢的问题,但我不能为我的世界弄明白它!(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 st

你好,这可能是一个愚蠢的问题,但我不能为我的世界弄明白它!(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..
以及:

现在我尝试先将t_数作为int和t%d而不是char,但由于文件中的“t”,它只能作为char,然后是s%

问题是,如何将[I].t_数字用作int而不是指针?所以它使用数字,而不是其中的“T”

例如:

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

while(k你关于
t\u数字的声明不能成为
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)
不应该用数据替换文件吗?
另外,您的while循环看起来像是在检查fscanf是否返回5,可能需要检查您的文件是否在末尾,或者如果可能的话,在名称结构中保留一个计数器以循环到33(如果允许的话),如果要使用%s,您需要将t_数设置为一个数组,这样应该可以工作

很抱歉,这是一个拼写错误!很多次很抱歉!!尝试过,但遗憾的是,fscanf只是停止扫描文件。程序运行,但没有扫描任何数字或任何内容。使用t%d和您的解决方案都可以。成功了!我刚开始时忘记了空格问题!谢谢您多次
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...) ==