在C中的字符串中的定义位置获取字符
我希望从键盘上读入一个数字,然后我必须分别处理每个数字(这是一个八进制到十进制的转换器)。 是否有类似于Java中charAt()方法的东西可以用于处理特定的数字 我目前有以下代码(不完整),但在编译时,它返回“错误:下标值既不是数组也不是指针”在C中的字符串中的定义位置获取字符,c,C,我希望从键盘上读入一个数字,然后我必须分别处理每个数字(这是一个八进制到十进制的转换器)。 是否有类似于Java中charAt()方法的东西可以用于处理特定的数字 我目前有以下代码(不完整),但在编译时,它返回“错误:下标值既不是数组也不是指针” #包括 #包括 #包括 int main() { printf(“请输入以#结尾的八进制数字”); char nextNum=getchar(); 字符数; int counterUp=0;//记录输入的位数 int counterDown=1;//记
#包括
#包括
#包括
int main()
{
printf(“请输入以#结尾的八进制数字”);
char nextNum=getchar();
字符数;
int counterUp=0;//记录输入的位数
int counterDown=1;//记录转换过程中的进度
整数小数=0;
while(nextNum!='#')//读取整数,将字符组合在一起形成一个八进制数。
{
编号=(编号+下一个编号);
计数器++;
nextNum=getchar();
}
//开始从八进制到十进制的转换
while(计数器>=0)
{
整数相加=(数字[计数器]*(功率(8,计数器));
小数=(小数+加法);
反击++;
}
}
我不希望别人告诉我如何从八进制到十进制,只希望别人告诉我如何一次处理一个数字。使用fgets()
而不是一个字符:
char number[25]; // max of 25 characters in string
fgets(number, 24, stdin); // read a line from 'stdin', with a max of 24 characters
number[24] = '\0'; // append the NUL character, so that we don't run into problems if we decide to print the string
现在您可以随意下标
number
,例如number[10]=“A”
我认为您需要后退一步,更仔细地研究您的算法
char number
存储什么?您希望这个循环做什么:
while(nextNum != '#') //reads in the whole number, putting the characters together to form one Octal number.
{
number = (number + nextNum);
counterUp++;
nextNum = getchar();
}
特别是,什么是
number=(number+nextNum)代码>平均值?您需要将数字定义为字符数组
e、 g
然后将读取循环更改为附加到数组
while(nextNum != '#')
{
number[counterUp] = nextNum;
counterUp++;
nextNum = getchar();
}
我认为您已经习惯了Java方式,可以编写如下内容:
String number = "";
number += "3";
number += "4";
C中的字符串不是这样工作的。此代码不会执行您认为它可以执行的操作:
char number = 0; // 'number' is just a one-byte number
number += '3'; // number now equals 51 (ASCII 3)
number += '4'; // number now equals 103 (meaningless)
也许这样的事情对你有用:
char number[20];
int i = 0;
number[i++] = '3';
number[i++] = '4';
或者,您可以简单地使用scanf
从键盘读取数字
我建议你找一本关于C的好书,先读字符串,然后再读scanf
。请发布完整的编译器错误消息,并指出编译器标记为错误的代码行。错误的代码行是int added=(number[counterUp]*(pow(8,counterDown))
因为number
是一个字符,所以像数组类型一样访问它是没有意义的…使用下面建议的字符数组。nextNum从键盘读取下一个数字,并(至少我以前认为)将其附加到数字字符串的末尾。@user1247751char number代码>不是字符串。这是一个单一的字符。此外,C没有内置的字符串附加运算符。
char number = 0; // 'number' is just a one-byte number
number += '3'; // number now equals 51 (ASCII 3)
number += '4'; // number now equals 103 (meaningless)
char number[20];
int i = 0;
number[i++] = '3';
number[i++] = '4';