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