我正在检查一个项目是否在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)
我知道,问题出在分支逻辑之内,因为某种原因,它无法将字符输入与数组中的任何字符进行比较。因此,输出为空,程序仅结束。
我有一个函数,两个字符串string_one和string_two一个指向字符的指针.
我想到了一种将它们添加到一起的方法:
while (*string_one){
string_one++;
}
*string_one = *string_two;
Run Code Online (Sandbox Code Playgroud)
但我看不到输出中的第二个字符串!
如何添加两个字符串呢?我接近了吗?
在运行时,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中编写了这个代码,一个接一个地在一个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) Moin,我刚刚在一些源代码中找到了for循环.
for (;;) {
// some work
if (condition) {
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这是怎么回事 for (;;) ?
我在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);}但它没有改变任何东西.我试图temp用char temp[1000]而不是malloc拿走free(temp);线来宣布,但它仍然做同样的事情.如果我拿走free(temp);线路仍然使用malloc问题解决了,但是存在巨大的内存泄漏,所以我不能这样做.如果有错误取决于myString字符串中的内容,这意味着如果那里有某个值,则总会出现错误,如果有另一个特定值,则永远不会出现错误,但我可以我们设法找出哪种类型的价值观有效,哪些价值观无效,似乎是随机的.
为什么free(temp);有时候工作,有时候不工作,怎样才能让它始终有效?
当我们在C中乘以浮点数时,我们得到了什么?请解释.我感到很困惑,因为当我遇到Celsius到Fahrenheit转换以及许多其他转换时我遇到了这个问题.
#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
如果我在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程序来反转一个字符串.即便如此,我声明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)