c - char* 究竟定义了什么?如果它定义了一个字符串数组,我如何输出单个元素?

标签 c arrays string pointers output

int main()
{
int a = 0;
int BUFSIZE = 1000;
char *string1[20];
FILE *fp1 = fopen("input1.txt", "r");
if (fp1 == 0)
{
    fprintf(stderr, "Error while opening");
    return 0;
}
string1[a] = (char *)malloc(BUFSIZE);
while (fgets(string1[a], BUFSIZE, fp1)!=NULL)
{
    a++;
    string1[a] = (char *)malloc(BUFSIZE);
} 
printf("%c", string1[3]);
}

你好,我得到了上面的代码,它从一个文本文件中读取一个字符串并将它存储在一个数组中。现在我想输出数组 string1 的某个元素,但显然 printf 不起作用。此外, char *string1[20] 究竟定义了什么?它与指针有关吗?谢谢!

最佳答案

char *string1[20]

声明一个数组,命名为string1 , 共 20 个 指向 char 的指针。因此 string1[3]是指向 char 的指针, 而不是 char ,正如 %c 所要求的那样格式。

string1[3]是 - 如果有的话 - 通过 fgets 填充,它包含一个以 0 结尾的字符串,因此您可以使用

将其打印出来
printf("%s\n", string1[3]);

如果你想打印单个字符,你会使用

printf("%c\n", string1[3][4]);

例如。

关于c - char* 究竟定义了什么?如果它定义了一个字符串数组,我如何输出单个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13325234/

相关文章:

c - FILE 结构中未使用的变量

C - 使用进程监视文件

ruby - 在 Ruby 中拆分一串具有不同数字大小的数字

c - 4 变量映射到数组

c - 打印段错误原因

java - 在运行时间 O(n logn) 内比较数组的每个元素

c - C 中的字符串文字以 %?

c# - 有什么方法可以改进这个字符串切片方法吗?

php - 如何在 mySql 查询中使用 mysql 列内容作为 php 数组的索引(键)?

javascript - Splice() 不会使数组为空