如何正确打印c字符串中的每个元素

how to properly print each element in a c string?

本文关键字:元素 字符串 何正确 打印      更新时间:2023-10-16
#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("%cn",a[i]);
    }
    system("pause");
}

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

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

A
E
─
╒
┴
■
┌
·
Φ
8
↔

p
╘
╠
x
3
☻

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

char a[20];

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

<>之前$ gcc -Wall -Werror -pedantic main.cmain.c:在main函数中:main.c:9:5: error: format ' %s '期望参数类型为' char * ',但参数2的类型为' char ** ' [-Werror=format]main.c:10:5:错误:format ' %c '期望参数类型为' int ',但参数2的类型为' char * ' [-Werror=format]Cc1:所有警告都被视为错误之前

检查fopen()fscanf()的结果,以确定文件已打开,数据已读取到a,然后再尝试使用变量

a是一个包含20个char 指针的数组。我想你想要一个20个字符的数组而不是

char a[20];
char a[20];
FILE * fin = fopen("testtest.txt","r");
int i;
fscanf(fin,"%19s",a);