R闪亮应用程序(服务器端)中的以下代码给出的结果如下所示。但是我们可以禁用此错误消息吗?就像我们不需要显示任何消息。我们可以做到吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int remove_element(int** array, int sizeOfArray, int indexToRemove)
{
int i;
int* temp = malloc((sizeOfArray - 1) * sizeof(int));
memmove(
temp,
*array,
(indexToRemove+1)*sizeof(int));
memmove(
temp+indexToRemove,
(*array)+(indexToRemove+1),
(sizeOfArray - indexToRemove)*sizeof(int));
free (*array);
*array = temp;
return 0;
}
int findDuplicate(int* array, int sizeOfArray){
int i, j;
for( j = 0 ; j < sizeOfArray ; j++ ) {
for(i = 0; i < sizeOfArray; i++){
if(array[i] == array[j] && i != j){
return i;
}
}
}
return 0;
}
int main()
{
time_t t;
srand((unsigned) time(&t));
int arraySize = 11;
int* test = malloc(arraySize * sizeof(int*));
int i, indexToRemove = 0;
for( i = 0 ; i < arraySize ; i++ ) {
test[i] = ((rand() % (91 + 1 - 65)) + 65);
}
for( i = 0 ; i < arraySize ; i++){
printf("%d, ", test[i]);
}
printf("\n============================================\n");
for (i = 0 ; i < arraySize ; i++){
indexToRemove = findDuplicate(test,arraySize);
if ( indexToRemove != 0){
remove_element(&test, arraySize, indexToRemove);
arraySize = arraySize - 1;
}
}
for( i = 0 ; i < arraySize ; i++){
printf("%d, ", test[i]);
}
return 0;
}
控制台结果(红色)
options(shiny.sanitize.errors = TRUE)
预期结果:
Error : An error has occurred. Check your logs or contact the app author for clarification
或
答案 0 :(得分:0)
如@ nopassport1所述,最好的选择是首先防止错误。
或者,根据情况,您可以通过将代码包装在try(x,silent = TRUE)
函数中来删除错误警告。
> try(1+"a")
Error in 1 + "a" : non-numeric argument to binary operator
> try(1+"a",silent = TRUE)
>