gpt4 book ai didi

C如何将用户输入的单词存储在字符指针中

转载 作者:太空宇宙 更新时间:2023-11-04 05:17:41 24 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
char *read[100];
char *ch, *back;
int i;

ch = read;

printf("Enter a sentence and get it reversed: ");
while (getchar() != '\n') {
*ch = getchar();
ch++;
}

for (back = ch; back != read; back--) {
printf("%s",*back);
}

return 0;
}

这是我的代码。是否可以将字符串存储在数组或指针中。这种语言很古老。例如,如果用户写了 void 和 null,则输出应该是 null and void。我用一个指向 char 数组的指针来尝试这个,只想打印单词 backwords 但它什么都不做。我的代码有什么问题?

最佳答案

三个问题:

  1. char *read[100]; 不是 char 的数组。它是指向 char 的指针数组。将其更改为 char read[100]; 以获得大小为 100 的 char 数组。
  2. printf("%s",*back); 是错误的,因为 *backchar℅s 需要一个 char*。将其更改为 printf("%c",*back);
  3. 这个 for (back = ch; back != read; back--) { 应该是 for (back = ch - 1; back >= read; back--) { 。否则,您将在循环的第一次迭代中读取未初始化的内存位置。

现在您的代码容易受到缓冲区溢出的影响,即,当输入的字符超过 100 个时,任何结果都可能发生,因为您的程序将从无效的内存位置读取和写入,从而调用未定义的行为。

关于C如何将用户输入的单词存储在字符指针中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31965756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com