如何从c中读取char数组中的字符串,用空格分隔?

时间:2016-03-12 09:54:57

标签: c arrays string

我有一个char数组包含由null分隔的字符串。我有char aarray中存在的字符串的索引。如何使用索引从此char数组中读取字符串,并以null分隔。

e.g。我有以下char数组,

char *buf = ['\0', 'b', 'c', 's', '\0', 'n', 'e', 'w', '\0', 'n', 'x', 't', '\0'];

我有这些字符串的索引,例如 bcs 字符串的索引1 字符串的索引5 索引9为 nxt 字符串

如何使用此char数组中的索引读取这些字符串?

3 个答案:

答案 0 :(得分:1)

很抱歉这个简单的问题,我得到了答案,我们可以从char数组中获取字符串,如下所示: - 获取要获取的字符串的索引地址 - 打印字符串

char* str = &buf[index];
if(str)
printf("string is : %s\n", str);

答案 1 :(得分:1)

更通用的方法是在打印所有字符串之前通过buf,即不使用索引。

问题是如何识别缓冲区(已使用部分)的结束。一般的技巧是使用额外的空字符终止缓冲区。以下内容证明了这一点:

char buf[] = {'\0', 'b', 'c', 's', '\0', 'n', 'e', 'w', '\0', 'n', 'x', 't', '\0', '\0'};

void f(void)
{
    char *s= buf;
    do {
        if (*s==0) {
            if (*(s+1)==0) break;
            s++;
        }
        puts(s);
        while (*s) s++;
    } while(1);
}

答案 2 :(得分:0)

这是你怎么做的。虽然我没有做任何安全检查,代码只显示如何从字符数组中读取字符串,用null终止符分隔。每当你为数组赋值多个时使用这个括号[]而不是使用花括号{}

#include <stdio.h>
int main(void) {
   char buf[] = {'\0', 'b', 'c', 's', '\0', 'n', 'e', 'w', '\0', 'n', 'x', 't', '\0'};
   int indx = 0;
   printf("Which index to read from:");
   scanf("%d", &indx);
   for(int i = indx; buf[i] != '\0'; i++){
    printf("%c", buf[i]);
  }
}