嘗試當我嘗試編譯底部的代碼做一個任務,我得到以下調試斷言失敗存根:調試斷言失敗的錯誤與空終止字符數組
文件:F:\ DD \ vctools \ CRT \ crtw32 \轉換\ istype.c
線:56
李毅華C> = -1 & &ç< = 255
幾個問題似乎與此錯誤消息apparant。我甚至沒有f驅動器或目錄,除非該行被計入isctype.c程序中,否則我的代碼中沒有56行。
目標是計算用戶輸入的單詞數量。事先檢查空格以及空終止字符。
if (isspace(wordArray[i] && isspace(wordArray[i + 1]))){
有幾個問題:
下面的代碼已根據從其他用戶
#include <stdafx.h>
#include <iostream>
#include <string.h>
#include <cctype>
using namespace std;
int wordCount(int size, char wordArray[]);
int main(){
const int SIZE = 100;
char wordArray[SIZE];
cout << "What is the string you wish to enter? ";
cin.getline(wordArray, sizeof(wordArray));
cout << "The number of words entered is: " << wordCount(strlen(wordArray), wordArray) << endl;
}
int wordCount(int size, char wordArray[]){
int charCount = 0, wordCount = 0;
//counts the number of words in the entered string
for (int i = 0; wordArray[i] != '\0'; i++){
if (isalnum(wordArray[i])){
charCount++;
if (isspace(wordArray[i + 1])){
charCount = 0;
wordCount++;
}
}
}
return wordCount;
}
+1,很好。 :) – ppl
好吧,我添加了一個paren到wordArray [i]結尾)。考慮到你對下一行的關注,我還應該添加代碼來減小數組的大小嗎?因爲我看到的每個地方都有相同的代碼。 – koodeta
下一行只會將一個字符複製到另一個字符,或者可能本身。它複製哪個角色是** undefined **,因爲您無法確定是先評估左側還是右側。你會以'wordArray [i] = wordArray [i]; i ++'或'wordArray [i + 1] = wordArray [i];我++',這兩者都不是你想要的。在這種情況下,你不想增加'i'。你需要做的是將整個字符串的其餘部分移回一個,你可以通過循環或'memmove'來完成。無論如何,我不確定你甚至想要改變字符串。 –