小编Sou*_*osh的帖子

检查项目是否在C中的数组中

我正在检查一个项目是否在C中的数组中,使用for循环遍历数组中的每个项目并将其与用户输入一一比较。

int main()
{
    char birds[] =
    {
        [0] = "a",
        [1] = "b",
        [2] = "c",
        [3] = "d",
        [4] = "e",
        [5] = "f",
        [6] = "g",
        [7] = "h"
    };
    int birdfound;
    int i;
    printf("Enter bird:");
    scanf("%c", &birdfound);
    //printf("%c", birdfound);
    for(i=0; i<8; i++)
    {
        //printf("Y");
        if(birdfound == birds[i]){
            printf("Bird in array, found at position %d\n", i);
        }
    }
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道,问题出在分支逻辑之内,因为某种原因,它无法将字符输入与数组中的任何字符进行比较。因此,输出为空,程序仅结束。

c arrays string char

-2
推荐指数
1
解决办法
62
查看次数

这是在c中添加两个字符串的有效方法吗?

我有一个函数,两个字符串string_onestring_two一个指向字符的指针.

我想到了一种将它们添加到一起的方法:

while (*string_one){
    string_one++;
    }
    *string_one = *string_two;
Run Code Online (Sandbox Code Playgroud)

但我看不到输出中的第二个字符串!

如何添加两个字符串呢?我接近了吗?

c string

-3
推荐指数
1
解决办法
56
查看次数

以下代码中的错误是什么?

在运行时,max从数字列表中给出所需的最大数量,但是min没有给出它应该给出的最小数量.例如:

如果输入是:

5
45 7 2 1 4

以下代码的输出是:

最大数量是45

最小数量为0

为什么?

#include <stdio.h>
#include <limits.h>
#define MX 1000000

int max=INT_MIN;
int min=INT_MAX;

int findmax(int a[],int n)
{
    if(n<0)
        return max;
    if(a[n]>max)
    {
        max=a[n];
    }
    return findmax(a,n-1);
}

int findmin(int a[],int n)
{
    if(n<0)
        return min;
    if(a[n]<min)
    {
        min=a[n];
    }
    return findmin(a,n-1);
}

int main(void) {
    int a[MX],n,i;
    printf("Enter the number of elements:\n");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("Maximum number is %d\n",findmax(a,n));
    printf("Minimum number is %d\n",findmin(a,n));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c arrays

-3
推荐指数
1
解决办法
65
查看次数

为什么文件仅包含第一次迭代的打印

我在C中编写了这个代码,一个接一个地在一个txt文件中打印1到10的nos但是在执行之后只有第一个no打印在txt文件中.请帮助

 #include<stdio.h>
 #include<stdlib.h>
 int main()
 {
     int i;
     FILE *fptr;

     fptr=fopen("C:\\program.txt","w");

     for(i=1;i<=10;i++)
     {
         fprintf(fptr,"\n%d\n",i);
         fclose(fptr);
     }
 }
Run Code Online (Sandbox Code Playgroud)

c file-io printf loops

-3
推荐指数
1
解决办法
48
查看次数

是什么意思"for(;;)"

Moin,我刚刚在一些源代码中找到了for循环.

for (;;) {
    // some work
    if (condition) {
       break;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是怎么回事 for (;;)

c syntax for-loop

-3
推荐指数
1
解决办法
187
查看次数

C语言中free()函数的问题

我在while循环中有一个for循环来处理字符串.这基本上是我的代码的结构:

char myString[1000];
//Initialize and maybe change myString
for(/*conditions*/){
    while(/*conditions*/){
        if(strchr(myString,' ') == NULL){
            break;
        }
        char *temp = malloc(sizeof(char) * strlen(myString));
        strcpy(temp,myString);
        *strchr(temp,' ') = '\0';
        strcat(myString," ");
        strcat(myString,temp);
        free(temp);
    }
}
Run Code Online (Sandbox Code Playgroud)

有时,这段代码运行得很好,但有时候进程结束并返回3,这意味着有一个错误(3是我尝试使用NULL时通常会得到的返回值,我不应该喜欢,例如myPointer->examplewhere myPointerNULL ).经过一些测试,我发现引起问题的那条线是free(temp);.我试图替换它,if(temp != NULL){free(temp);}但它没有改变任何东西.我试图tempchar temp[1000]而不是malloc拿走free(temp);线来宣布,但它仍然做同样的事情.如果我拿走free(temp);线路仍然使用malloc问题解决了,但是存在巨大的内存泄漏,所以我不能这样做.如果有错误取决于myString字符串中的内容,这意味着如果那里有某个值,则总会出现错误,如果有另一个特定值,则永远不会出现错误,但我可以我们设法找出哪种类型的价值观有效,哪些价值观无效,似乎是随机的.

为什么free(temp);有时候工作,有时候不工作,怎样才能让它始终有效?

c malloc pointers strlen

-3
推荐指数
1
解决办法
213
查看次数

整数*浮点数=?在C.

当我们在C中乘以浮点数时,我们得到了什么?请解释.我感到很困惑,因为当我遇到Celsius到Fahrenheit转换以及许多其他转换时我遇到了这个问题.

c arithmetic-expressions multiplication

-3
推荐指数
1
解决办法
1261
查看次数

C语言操作员

#include <stdio.h>  

int main() 
{

    int a=-1?2:5 + 8?4:5;
    printf("%d\n",a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

以上程序的输出是2.但为什么呢?请解释

c operators ternary-operator conditional-operator operator-precedence

-3
推荐指数
1
解决办法
68
查看次数

使用未初始化的全局变量(用于读取和写入)可以吗?

如果我在C程序中使用未初始化的全局变量,会发生什么?是不确定的行为?

#include <stdio.h>

int i;

int main() 
{
    while(i < 5)
    {
        i++;
    }
    printf("%d\n", i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c variables initialization global-variables

-3
推荐指数
1
解决办法
79
查看次数

char*str和malloc为str的内存,仍然得到SEGFAULT

我写了一个小C程序来反转一个字符串.即便如此,我声明str
char*str
然后
str = (char*)malloc(20); str = "this is a test";
,如果我使用,我不会得到SEGFAULT
char str[20] = "this is a test"

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

void swap(char *a, char *b)
{ 
  char temp; 
  temp = *a;
  *a = *b; 
  *b = temp; 
} 

char* reverse(char *str)
{ 
  int len = strlen(str); 
  printf("len = %d \t %s\n", len, str); 
  int i = 0; 

  if (len == 0) 
    return NULL; 
  for (i=0; i<len/2; i++) 
  { 
    swap((str+i), (str+len-1-i));    
    printf("%s\n", str); …
Run Code Online (Sandbox Code Playgroud)

c arrays string char segmentation-fault

-3
推荐指数
2
解决办法
123
查看次数