我可以打印出我读到的字符串值,但我在转换为使用ASCII等效值时遇到了困难
我试图从文件中读取几行,并在逐行读取时存储每个字符的ASCII值。我的输入如下所示: 下面是我的代码最初的样子及其产生的结果:我可以打印出我读到的字符串值,但我在转换为使用ASCII等效值时遇到了困难,c,file,ascii,C,File,Ascii,我试图从文件中读取几行,并在逐行读取时存储每个字符的ASCII值。我的输入如下所示: 下面是我的代码最初的样子及其产生的结果: char buf3[256], buf5[256], buf6[256], buf7[256], buf4[256], buf9[256]; fscanf(fp, "%[^\n]", buf3); while (!feof(fp)) { fscanf(fp, "%s %s %s %s %s", buf4, buf5, buf6, buf7, buf9)
char buf3[256], buf5[256], buf6[256], buf7[256], buf4[256], buf9[256];
fscanf(fp, "%[^\n]", buf3);
while (!feof(fp)) {
fscanf(fp, "%s %s %s %s %s", buf4, buf5, buf6, buf7, buf9);
printf("\n%c %c %c %c %c", *buf4, *buf5, *buf6, *buf7, *buf9);
}
我以为打印出%c会给我ASCII值。
有没有办法转换这些值?我以为打印出%c会得到ASCII值No,格式说明符%c
打印等价的char
值,因为buf4
,buf5
等是char数组,所以当您打印*buf5
时,它会打印数组的第一个字符&如果您打印ascii
值,您必须从48
中减去它(ascii值为0)如果*buf
包含数字(0-9)。例如
printf("%d\n",(*buf4) - 48);
或
同样对于这种特殊情况,其堆栈内存的wstage声明五字符数组,如buf3
,buf4
。buf9
。您可以只使用一个字符数组&执行该操作。例如
int index = 0 ;
char buf[20]; /* lets say each word of file are length of 20 char, you can change it */
while (fscanf(fp,"%s",buf) != EOF) {
while(buf[index] != '\0') {
if(buf[index] >= '0' && buf[index] <= '9') { /*or use isdigit() */
printf("%d",buf[index] - 48);
}
else { /* apart from 0,1,...9 */
printf("%d",buf[index]);
}
index++;
}
printf(" ");
index = 0;
}
int索引=0;
char buf[20];/*假设文件的每个字的长度为20个字符,您可以更改它*/
while(fscanf(fp,“%s”,buf)!=EOF){
而(buf[index]!='\0'){
如果(buf[index]>='0'&&buf[index]让我们假设您的输入011R0
存储在数组buf
中,那么要打印每个字符的ASCII值,您必须访问每个字符并将其打印为一个整数:
int i;
while(buf[i])
{
printf("%d\n",buf[i]);
++i;
}
通过使用索引[i]
可以访问字符串中的每个字符。此外,还可以查看以下内容:您需要使用%d
打印字符的ASCII值-例如:printf(“%d”,buf5[0])学习如何访问字符串中的每个字符。*buf4、*buf5、*buf6、*buf7、*buf
将打印每个数组中的第一个字符。%d
转换正确,可以打印ASCII值——要转换为十进制值,可以从字符值中减去'0'
)您需要查看。您应该在此处复制并粘贴输入和输出。将它们放入图像将阻止人们尝试我编辑的答案。如果有任何其他问题,请查看或收回Dv。
int i;
while(buf[i])
{
printf("%d\n",buf[i]);
++i;
}