Tag: c

通过scanf_s读取字符时访问冲突写入位置

每当我尝试读取诸如3 + 5类的表达式时,我一直遇到“访问违规写入位置” #include add(double a, double b, int prec); int main() { int prec; double a, b; char oper; printf(“Enter Precision: “); scanf_s(“%d”, &prec); if (prec<0) { printf("This is not a valid precision value"); } printf("%d", prec); printf("Enter Expression: "); scanf_s("%lf %c %lf", &a, &oper, &b); … }

c – 在2d数组中检查null

我从输入文件中填充10 x 10个字符的网格。 我需要检查网格是否是正方形(即,有N×N个字符,其中N <= 10) 输入文件是这样的: pitk olpe pkey tope 当我在gdb中打印网格时,我得到以下结果: $1 = {“pitk\000\000\000\000\366h”, “olpe\000\000\001\000\000”, “pkey\000\000\000\000\000”, “tope\000\000\000\000\000”, “\000\344\241\367\377\177\000\000”, , “\000\377\377\177\000\000\037\355\336”, , “\000\177\000\000\000\000\000\000\000”, “\000\000\000\000\000\000\000\000\000”, “\000\000\000\000\000\000\000\000\r\020”, “\000\000\000\000\000\000\000\000\000”} 我的主函数中检查网格是否有效的部分是: bool check = (checknxn(grid)); if(check == false) { fprintf(stderr, “Invalid Input!\n”); exit(0); } checknxn函数: bool checknxn(char grid[10][10]) { int columns = 0; for(int i=0;i<10;i++) { if(grid[0][i]!=NULL) columns++; else […]

为什么将scanf()的结果与NULL进行比较会产生编译器警告?

我用C语言写作,我需要阅读输入中的所有内容,但我不知道会收到多少个字符。 我写 while (scanf(“%c”, &read) != NULL) 但是编译器告诉我: [Warning] comparison between pointer and integer ,那么我应该写什么呢?

使用typedef动态分配Matrix

我已经知道如何在矩阵中使用malloc如果它是一个int** 。 但是使用typedef ,我认为有一个想法,但我不太确定。 typedef int LabeledAdjMatrix[SIZE][SIZE]; 我这样做吗? APSP = (APSPMatrix*)malloc(sizeof(APSPMatrix)); 但是当我访问它时,我将不得不使用*APSP[0][0] ,我不知道如何在memset / memcpy使用它。 有没有正确的方法呢? 无论是动态分配还是访问。

Scanf被忽略

#include #define length 20 main() { float x; int y; float array1[length], array2[length], array3[length]; float ray[length]; int size1 = insert(array1, length); printf(“enter number: “); scanf(“%d”, &y); int size2 = insert(array2, length); int size3 = insert(array3, length); } int insert(float a[], int size) { int n = 0; while(n<size && scanf("%f\n", &a[n]) == 1) { printf("you […]

SPOJ-小因子

http://www.spoj.com/problems/FCTRL2/ 我的代码显示了Spoj中的编译错误,尽管在我的编译器中运行准确。 ** IDE – 代码块** int cal(int ); int main() { int i,t; int n[100]; scanf(“%d”,&t); for(i=0;i<t;i++) { scanf("%d",&n[i]); } for(i=0;i=1;j–) { a=a*j; } return a; }

PyCuda:在Cuda内核中通过指针取消引用数组元素

我正在使用PyCuda通过指针将数组对传递给cuda内核。 数组是不同内核的输出,因此数据已经在GPU上。 在内核中,我试图访问每个数组中的元素来进行向量减法。 我为数组中的元素获取的值不正确(h&p在下面的代码中是错误的)。 任何人都可以帮我看看我做错了什么? 我的代码: import pycuda.driver as cuda import pycuda.autoinit from pycuda.compiler import SourceModule import numpy as np import time import cv2 from pycuda.tools import DeviceMemoryPool as DMP from scipy.spatial import distance import os import glob def get_cuda_hist_kernel(): #Make the kernel histogram_kernel = “”” __global__ void kernel_getHist(unsigned int* array,unsigned int size, unsigned int* […]

printf中的预增量和后增量

int main() { int value = 4321; int *ptrVal = &value; printf(“%d %d”,++value,(*(int*)ptrVal)–); return 0; } 在上面的print语句中,预增量/后增量如何工作? 为什么回答4321 4321?

在虚拟shell中处理CTRL-C

我正在编写一个虚拟shell,当用户输入ctrl-C时它不应该终止,但是应该只生成一个新的提示行。 目前,当我输入ctrl-C时,我的shell不会终止,但它仍然不会打印新的提示行。 你知道为什么会这样,我怎么解决这个问题? 我的代码如下: #include #include #include #include #include #include #include #define BUFFER_SIZE 1<<16 #define ARRAY_SIZE 1<= &bufCmdArgs[cmdArgsSize])) break; } for (p=n=0; bufCmdArgs[n]!=NULL; n++){ if(strlen(bufCmdArgs[n])>0) cmdArgs[p++]=bufCmdArgs[n]; } *nargs=p; cmdArgs[p]=NULL; } void INThandler(int sig) { printf(“\n> “); signal(sig, SIG_IGN); } int main(void) { char buffer[BUFFER_SIZE]; char *args[ARRAY_SIZE]; int retStatus; size_t nargs; pid_t pid; printf(“$dummyshell\n”); signal(SIGINT, INThandler); […]

如何使我的输出有空间(偶数和奇数)

#include #include #define BILMAX 10 int main() { int num[BILMAX],i; printf(“insert 10 number and separated by space:\n”); for (i = 0;i<10;i++) { scanf("%d",&num[i]);} printf("\n\nEven Number : \n"); for(i = 0; i < 10; i++) { if(num[i] % 2==0) printf("%d",num[i]); } printf("\n\nOdd Number : \n"); for(i = 0;i < 10; i++) { if(num[i] % 2 !=0) […]