在c语言中读取一行并转换为字符串

在c语言中读取一行并转换为字符串,c,C,这是我第一次在这里发表文章,所以我真的不知道如何用正确的格式在这里发表文章。我有一个问题,关于如何从文件中读取一行,并将一些单词作为字符串读取,另一些作为Int读取 int check = sscanf(read, "%s %d", string, &integer); printf("%s, %d", string, integer); 以上就是我所做的。输入为“一个字1”。我得到的是“(空)4196448”。那么,我如何才能正确地做到这一点呢?多谢各位 这是我的部分

这是我第一次在这里发表文章,所以我真的不知道如何用正确的格式在这里发表文章。我有一个问题,关于如何从文件中读取一行,并将一些单词作为字符串读取,另一些作为Int读取

    int check = sscanf(read, "%s %d", string, &integer);
    printf("%s, %d", string, integer);
以上就是我所做的。输入为“一个字1”。我得到的是“(空)4196448”。那么,我如何才能正确地做到这一点呢?多谢各位

这是我的部分代码

    int i;
for (i = 1; i <= 3; i++)
    {
            char read[MAX_LENGTH_INPUT];
            fgets(read, sizeof(read), stdin);
            int check2 = sscanf(read, "%s %d", word, &number);
            printf("%s %d\n", word, number);
    }
输出是

    (null) 4196448
    (null) 4196448
    (null) 4196448

同样在代码
int check2=sscanf中(读“%s%d%d”、单词和数字)格式说明符为3,但参数为2

如果
文件
包含以下数据

oneword 1
secondword 2
thirdword 3
fourthword 4
然后


您可以在此处修改
fgets
,从
stdin
获取输入,只需将
fp
替换为
stdin
,而(fgets(read,sizeof(read),fp)!=NULL)

您正在使用的
sscanf

它从
char*
类型读取数据,并根据参数格式将其存储到附加参数给定的位置,就像使用了
scanf
一样,但从字符串而不是标准输入(stdin)读取数据


你需要使用
fscanf
read
在你的代码中应该是指向文件的指针。

这是我在这里的第一篇文章,所以我真的不知道如何在这里以正确的格式发布内容
你可以从现有的文章中学习,并阅读大量专门为像你这样的人编写的帮助材料。不管你是新来的。欢迎光临@泰克:你的文章格式没问题。@泰克:格式没问题,但你应该尝试生成一个最小但完整的程序,它仍然显示同样的问题。您只显示了部分代码,而它似乎甚至不是真实代码的一部分,因此我们必须猜测问题可能在哪里。似乎您希望使用
sscanf
,为什么不粘贴其余代码,以便我们可以看到错误,在您的代码中读取的内容应该是char*或char[],并且应该包含值“oneword 1”.是的,它和你的代码差不多,只是我没有打开文件。对不起,我不想把它当成家庭作业,所以我把它简单化了。它实际上是一个.in文件,其中包含您提到的输入。这就是我读这行的方法,然后是我问题中的代码。fgets(read,sizeof(read),stdin);int check=sscanf(读取“%s%d”、字符串和整数);printf(“%s,%d”,字符串,整数)@特克,最好把你的密码贴出来,与其发布一些内容并描述其余内容:)@terk Ok..这样你就可以检查
stdin
。还有你的主题行
从文件中读取一行并用c转换成字符串
会让每个人都感到困惑,因为如果你不处理
文件
,那么就不需要在这里提及。使用
检查
返回值(也应该是
const
),以验证
sscanf()
成功。@Jayesh是的,它应该是两个参数。我已经编辑了这个问题。你能检查一下有什么问题吗?
oneword 1
secondword 2
thirdword 3
fourthword 4
#include <stdio.h>

int main ()
{
    FILE *fp = fopen("file", "r");
    char read[100];
    int integer;
    char string[64];
    while (fgets(read, sizeof(read), fp) != NULL) 
    {
        int check = sscanf(read, "%s %d", string, &integer);
        if (check == 2) {
             printf("%s, %d\n", string, integer);
         }
         else{
             printf("Failed to scan all values\n");
         }
    }
}
oneword, 1
secondword, 2
thirdword, 3
fourthword, 4