在c中打印从指针到数组的字符串

时间:2014-04-08 14:29:35

标签: c

朋友我是c的新手,我正在尝试使用指针数组打印字符串我遵循在线教程中的代码http://www.tutorialspoint.com/.my代码链接是  这是a link! 所有事情都没问题没有错误,当我运行代码消息时显示:  [警告]不推荐将字符串常量转换为'char *'[-Wwrite-strings]  没有输出,在线代码是错误的,或者什么是错误可以任何人给我一些想法我的代码如下:

#include <stdio.h>

const int MAX = 4;

int main ()
{
   char *names[] = {
                   "Zara Ali",
                   "Hina Ali",
                   "Nuha Ali",
                   "Sara Ali",
   };
   int i = 0;

   for ( i = 0; i < MAX; i++)
   {
       printf("Value of names[%d] = %s\n", i, names[i] );
   }

   return 0;
}

如果我有任何错误,我复制代码,我是c更新,所以我正在学习在线教程,所以请不要给出任何负面评论,如果它也重复,请关闭问题。

2 个答案:

答案 0 :(得分:1)

*中的*names[i]移除printf;

printf("Value of names[%d] = %s\n", i, names[i] );

答案 1 :(得分:0)

[Warning] deprecated conversion from string constant to 'char*'表示你有字符串文字,它是只读的,但你有一个指向它的指针允许修改。所以编译器会警告你。要消除警告,这应该将name声明为const char的指针数组,如下所示:

const char *names[] = { /*...clipclip... */ };

它只是&#34;只是&#34;一个警告,因为旧代码经常有这样的指针,现在使这个错误会阻止编译。此外,只要您不尝试修改字符串文字,这个问题就没问题了。如果这样做,您应该在任何现代操作系统上在运行时获得分段错误或等效错误。此外,有时您可能希望初始化char*变量以指向字符串文字,然后在必要时将其更改为指向新的可修改缓冲区,但任何此类用例都应记录注释,并通过以下方式禁用警告:使用显式转换char *s = (char*)"defaultvalue";