如何更改字符串数组中的字符?

时间:2013-12-29 19:45:32

标签: c arrays string character

我是C的新手,作为我的任务的一部分,我必须使用fgets()删除在字符串末尾添加的换行符。

我的讲师建议这种方法:

char names[20];
fgets(names,20,fp);
names[strlen(names)-1]='\0';

我省略了一些代码,因为我只展示了这个方法。

但是,在我们的任务中,我们必须处理字符串数组。 我试过......

names[strlen(names[i])-1]='\0';

但似乎只找到字符串的长度,扣除1然后在索引中使用该数字,然后在数组的下方设置一个字符串为 \ 0

有没有办法访问字符串的各个字符?

我知道我可以使用

访问字符串
names[i] // where i is the numeric index

但我需要访问该字符串中的各个字符。

这是我第一次在StackOverflow上发帖,所以如果我没有提供足够的细节或者我的问题格式不正确,请通知我。

提前致谢。

3 个答案:

答案 0 :(得分:4)

如上所述,在C中,字符串是一个字符数组。因此,您可以像访问任何数组一样访问各个字符。对于您的任务,您需要做的是

  char names[100][20];
  //Now this declares 100 strings of size 20 each.
  //To access a single character in the position '4' from string 0 you can write
  printf("%c",names[0][3]);

  //To modify the string in position 'i' you will use 
  names[i][strlen(names[i])-1]='\0';

最后一行与您为单个字符串编写的内容非常相似。

使用第一个索引'i',您可以访问该位置的字符串。并使用第二个索引访问该字符串的特定字符。

答案 1 :(得分:1)

试试这个:

#include <stdio.h>
#include <string.h>

int main(void)
{
    char names[10][10];
    char c = 'A';
    for(int index = 0; i < strlen(names) - 1)
    {
        names[0][index] = c++;
    }
    names[i][strlen(names[i])-1]='\0';

    printf("%s", namws[0]);

    return 0;
}

答案 2 :(得分:0)

在c中,string实际上是一个char数组。 所以,

char[] charArray = "string";

charArray [0]会给你''。