2
#include <stdio.h>
#include <iostream>

using namespace std;

int main(){
    char *a[20];
    FILE * fin = fopen("testtest.txt","r");
    int i;

    fscanf(fin,"%s",a);

    for(i=0;i<20;i++)
    {
        printf("%c\n",a[i]);
    }

    system("pause");
}

在这个程序中,我想打印数组中的每个元素,它应该是 ABCDE 但实际上它打印:

似乎每个元素都很奇怪,我应该如何正确打印它?

A
E
─
╒
┴
■
┌
·
Φ

8
↔


p
╘
╠
x
3
☻
4

3 回答 3

8

的类型a是 的数组char*,而不是 的数组char。改成:

char a[20];

建议在最高警告级别编译,并将警告视为错误。例如:

$ gcc -Wall -Werror -pedantic main.c
main.c:在函数'main'中:
main.c:9:5:错误:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“char **”[-Werror=format]
main.c:10:5:错误:格式“%c”需要“int”类型的参数,但参数 2 的类型为“char *”[-Werror=format]
cc1:所有警告都被视为错误

在尝试使用变量之前检查结果fopen()fscanf()确定文件已打开并已读入数据。a

于 2013-04-19T16:30:39.110 回答
2

achar 是一个包含 20 个指针的数组。我想你想要一个 20 个字符的数组

char a[20];
于 2013-04-19T16:30:49.023 回答
0
char a[20];
FILE * fin = fopen("testtest.txt","r");
int i;

fscanf(fin,"%19s",a);
于 2013-04-19T16:36:18.113 回答