C 将字符串转换为整数的更好方法

C 将字符串转换为整数的更好方法,c,C,我写这段代码是为了读取.txt文件中的一个变量,忽略第一个字符并将其转换为整数。它可以工作,但看起来很愚蠢,有更好的方法吗?我在这里只使用了一个字符串,但它应该与四个字符串一起工作 void read(char a[]) { int i; char a1[3]; for (i = 0; i<3; ++i){ a1[i]= a[i+1]; } int b1 = atoi(a1); } int main() { FILE *f

我写这段代码是为了读取.txt文件中的一个变量,忽略第一个字符并将其转换为整数。它可以工作,但看起来很愚蠢,有更好的方法吗?我在这里只使用了一个字符串,但它应该与四个字符串一起工作

void read(char a[])
{
    int i;
    char a1[3];
    for (i = 0; i<3; ++i){
        a1[i]= a[i+1];
    }

    int b1 = atoi(a1);
}

int main()
{
    FILE *file;
    file = fopen( "file.txt", "r");

    if (file == NULL) {
        printf( "Arquivo nao encontrado\n");
    }

    char a[4];
    fscanf(file, "%s\n",&a);

    read(a);

    return 0;
}
void读取(字符a[]
{
int i;
char a1[3];
对于(i=0;i
#包括
#包括
内部主(空)
{
const char filename[]=“file.txt”;
FILE*fp=fopen(文件名,“r”);
如果(fp==0)
{
fprintf(stderr,“无法打开文件%s进行读取,\n”,文件名);
返回(退出失败);
}
int值;
如果(fscanf(fp,%*c%d,&值)!=1)
{
fprintf(stderr,“无法从文件%s中读取整数值”,文件名);
fclose(fp);
返回退出失败;
}
printf(“读取%d\n”,值);
fclose(fp);
返回0;
}
%*c
读取单个字符,但不进行赋值。禁止赋值的
*
是 函数族


未经测试的代码。

如果您只是忽略了第一个字符,您就不能说
atoi(a+1)
?@alvits我试过了,但没有成功,但谢谢。它确实有效。您一定做错了。@EJP:它有效,但需要注意的是,如果输入是4个字符,
char a[4];
不够大,函数中复制的字符串不是以null结尾的,等等。如果数组大小增加,并且在
main()
中调用
atoi(a+1)
,那么它就可以工作。当然,如果代码在某处打印出转换后的值,而不是愉快地丢弃它,这也会有所帮助。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    const char filename[] = "file.txt";
    FILE *fp = fopen(filename, "r");
    if (fp == 0)
    {
        fprintf(stderr, "Failed to open file %s for reading\n", filename);
        return(EXIT_FAILURE);
    }

    int value;

    if (fscanf(fp, "%*c%d", &value) != 1)
    {
        fprintf(stderr, "Failed to read integer value from file %s\n", filename);
        fclose(fp);
        return EXIT_FAILURE;
    }

    printf("Read %d\n", value);
    fclose(fp);

    return 0;
}