c - 在 C 中的 char 数组的前半部分中查找每隔一个字符的程序

标签 c arrays debugging

这是程序的第一部分,我有几个问题想知道它的各个部分是如何工作的。请记住,这是我编写的第一个 C 程序。 scanf("%d",&numberOfTimes);为什么我需要 & 它有什么作用? 字符输入[][200];这基本上是一个字符串数组还是完全不同的东西?

#include <stdio.h>
#include <string.h>
char outputs[100];
char input[][200];
int numberOfTimes;

void io(void){
    scanf("%d", &numberOfTimes);
    for(int i = 0; i < numberOfTimes; i++){
        scanf("%s",input[i]);
    }
}

代码的下一部分是我尝试实际解决问题的尝试,但是我怀疑我搞砸了一个函数的使用,但我不知道是哪个函数或者我使用不当的东西来得到这个结果。 (我在底部提供了我的示例 i/o 代码)。

void stringManipulation(char string[200]){
    int strLength = strlen(string);
    int number = strLength/2;
    for(int i = 0; i <= number; i=i+2){
        strcat(outputs,&string[i]);
    }
}



int main(void) {
    io();
    for(int i = 0; i < numberOfTimes; i++) {
        stringManipulation(input[i]);
        printf("%s\n",outputs);
        memset(&outputs[0], 0, sizeof(outputs));
    }
    return 0;
}

我是否正确使用了 memset?我还是不明白 & 的用法。

示例输入:

4

your

progress

is

noticeable

预期输出:

y

po

i

ntc

我得到的输出:

yourur

progressogressress

is

noticeableticeableceable

感谢您的帮助。

最佳答案

变量前的 & 表示您指的是变量的地址,而不是变量值本身。如果您不知道变量的地址是什么:http://www.cquestions.com/2010/02/address-of-variable-in-c.html

char input[][200] 是 char 数组的数组(char 数组被粗俗化为字符串,但它不是 TYPE)。

你的问题是关于你的 strcat 使用,你添加的字符介于 string[i] (包括)和 string[strLength],不仅是 string[i] 字符。

关于c - 在 C 中的 char 数组的前半部分中查找每隔一个字符的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37427030/

相关文章:

c# - 为什么静态变量不允许递归?

c - 如何在C中将短值除以int

c - 如何将 txt 文件中的整数值读入数组?

php - 最简单的问题: extract values from array

java - 如何在 Java 中生成连续整数的列表或数组?

javascript - 这个 JavaScript 语法是什么意思?

debugging - 无法在 Chrome 开发工具中设置断点,版本 26.0.1410.64 m

c++ - 如何设置c控制台窗口标题

javascript - .each 中的 jQuery 数组 .map

c++ - 如何在没有 pstack 和 gdb 的情况下获取线程堆栈信息