C-char指针和char指针字符串管理

标签 c string pointers arrays

我必须输入一个字符串并将其显示到标准输出。

理想的解决方案是将字符串获取到 char 指针数组中,但是我在 scanf 上收到错误,我推测是因为 char 指针字符串解决方案没有为其分配空间。

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

#include <string.h>


int main(void) {

char *charString;



printf("Input string - max %i caratteri: ",CHARARRAYSIZE);
scanf("%s", charString);

printf("%s",charString);


    return EXIT_SUCCESS;
}

因此,我求助于将 sting 获取到一个 char 数组中,然后将 (strcpy) 复制到一个 char 指针字符串中。v 在这种情况下,我收到一条警告,指出在 strcpy 调用 sayng 时使用了 strcpy 而未初始化。我该如何解决这个问题?

请在下面找到第二种情况的代码。

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

#include <string.h>



#define CHARARRAYSIZE 16


int main(void) {

char *charString;
char charArray[CHARARRAYSIZE];


printf("Input string - max %i characters: ",CHARARRAYSIZE);
scanf("%s", charArray);

strcpy(charString,charArray);

printf("%s",charString);


return EXIT_SUCCESS;
}

有什么方法可以实现我的目标并避免使用字符数组

最佳答案

您没有将指针初始化为指向任何东西。您可以使用 malloc() 在堆上为它分配内存,但请确保在使用完后 free() 它,否则会泄漏内存。例如,将您的原始代码块更改为如下所示:

/* You need + 1 to store the terminating null character. */
char * charString = malloc(CHARARRAYSIZE + 1);

/* ... */

free(charString);
return EXIT_SUCCESS;

关于C-char指针和char指针字符串管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23254694/

相关文章:

c - 此 C 代码的输出

c++ - 从字符串中删除重复字符

c++ - 构建二进制字符串 C++

c - 为什么 C 中没有内置函数来查找指针数组的大小?

c - fwrite 打印垃圾值,例如 @@@@@

c - 如何检查字符串末尾是否包含子字符串?

c++ - 如何查找和替换字符串?

c - C 中的结构扩展

c - 需要 int args(线程)的帮助

c++ - 为链接列表建立条目类