Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以打印出我读到的字符串值,但我在转换为使用ASCII等效值时遇到了困难_C_File_Ascii - Fatal编程技术网

我可以打印出我读到的字符串值,但我在转换为使用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)

我试图从文件中读取几行,并在逐行读取时存储每个字符的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);
    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;
   }